95 votes

Les demandes d'origine croisée ne sont prises en charge que pour le protocole HTTP, mais pas pour les domaines croisés.

J'utilise ce code pour faire une requête AJAX :

$("#userBarSignup").click(function(){
    $.get("C:/xampp/htdocs/webname/resources/templates/signup.php",
        {/*params*/},
        function(response){
            $("#signup").html("TEST");
            $("#signup").html(response);
        },
        "html");

Mais dans la console JavaScript de Google Chrome, je continue à recevoir cette erreur :

XMLHttpRequest ne peut pas charger file:///C:/xampp/htdocs/webname/resources/templates/signup.php. Les demandes croisées origines ne sont prises en charge que pour le protocole HTTP.

Le problème est que le inscription.php est hébergé sur mon serveur web local, d'où le site web est exécuté, donc il n'y a pas d'inter-domaine.

Comment puis-je résoudre ce problème ?

5 votes

Avez-vous essayé d'utiliser une URL HTTP au lieu d'un chemin local ?

1 votes

Je suggère d'utiliser une url complète

2 votes

@EdwardThomson Ça a marché ! Mais maintenant je dois mettre allow_url_include = On dans la configuration de mon serveur.

1voto

kehinde Points 87

Cela fonctionne mieux de cette façon. Assurez-vous que les deux fichiers sont sur le serveur. Lorsque vous appelez la page html, utilisez l'adresse web comme : http:://localhost/myhtmlfile.html et non, C::///users/myhtmlfile.html . Assurez-vous également que l'url passée au json est une adresse web comme indiqué ci-dessous :

$(function(){
                $('#typeahead').typeahead({
                    source: function(query, process){
                        $.ajax({
                            url: 'http://localhost:2222/bootstrap/source.php',
                            type: 'POST',
                            data: 'query=' +query,
                            dataType: 'JSON',
                            async: true,
                            success: function(data){
                                process(data);
                            }
                        });
                    }
                });
            });

0voto

YJDev Points 377
REM kill all existing instance of chrome 
taskkill /F /IM chrome.exe /T
REM directory path where chrome.exe is located
set chromeLocation="C:\Program Files (x86)\Google\Chrome\Application"
cd %chromeLocation%
cd c:
start chrome.exe --allow-file-access-from-files
  1. changez le chemin chromeLocation avec le vôtre.

  2. sauvegarder ce qui précède comme fichier .bat.

  3. glisser-déposer votre fichier sur le fichier batch que vous avez créé. (chrome offre une option de restauration des pages donc si vous avez des pages ouvertes, cliquez simplement sur restaurer et cela fonctionnera).

0voto

Pranav Kasetti Points 2072

Vous pouvez également démarrer un serveur sans python en utilisant l'interpréteur php.

Par exemple

cd /your/path/to/website/root
php -S localhost:8000

Cela peut être utile si vous souhaitez une alternative à npm, car l'utilitaire php est préinstallé sur certains systèmes d'exploitation (y compris Mac).

0voto

Pour tous les utilisateurs de python :

Il suffit d'aller dans votre dossier de destination dans le terminal.

cd projectFoder

puis lancez le serveur HTTP Pour Python3+ :

python -m http.server 8000

Serveur HTTP sur : : port 8000 (http://[: :]:8000/) ...

aller sur votre lien : http://0.0.0.0:8000/

Profitez-en :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X