Comment faire pour résoudre les “Cross-Origin Demande Bloqué” erreur?

J'ai un problème avec la SCRO. J'ai déjà chercher beaucoup de temps dans google pour résoudre ce problème, mais ne fonctionne pas.

- Je faire un popup à la procédure de dialogue avec l'extérieur popup.js fichier. Ce fichier js peut montrer dialogue pop-up quand j'ai appeler ce fichier à partir de n'importe quelle page dans un même projet(myweb.com).

Mais le problème est que lorsque j'appelle ce fichier js à partir d'un autre site comme celui-ci,

<script type="text/javascript" src="http://www.myweb.com/admin/popup.js"></script>
<script> document.addEventListener("DOMContentLoaded", function(event) {
    create_popup();
}); 
</script>

J'obtiens cette erreur,

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://www.myweb.com/admin/get_data.php?t=0.4987759219367701.
(Reason: missing token 'access-control-allow-methods' in CORS header 'Access-Control-Allow-Headers' from CORS preflight channel).

Dans mon fichier js-je exécuter get_data.php fichier en utilisant ajax. Voici mon fichier js,

function create_popup() {

    var xmlhttp = new XMLHttpRequest();
    if("withCredentials" in xmlhttp){
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                var arr = JSON.parse(xmlhttp.responseText);
                alert(arr);
            }
        xmlhttp.open("GET","http://www.myweb.com/admin/get_data.php?t="+Math.random(),true);
        xmlhttp.setRequestHeader( "Pragma", "no-cache" );
        xmlhttp.setRequestHeader( "Cache-Control", "no-cache" );
        xmlhttp.setRequestHeader("Access-Control-Allow-Origin","*");
        xmlhttp.setRequestHeader("Access-Control-Allow-Credentials", "true");
        xmlhttp.setRequestHeader("Access-Control-Allow-Methods", "GET");
        xmlhttp.setRequestHeader("Access-Control-Allow-Headers", "Content-Type");
        xmlhttp.send();
    }else{
        alert("error");
        console.log("error");
    }   
}

Ce fichier js est que le travail dans myweb.com. Mais quand j'essaie d'appeler ce js à partir d'un autre site, je reçois de la SCRO erreur.

Et j'ai aussi ajouter un en-tête de la SCRO en get_data.php fichier comme ceci,

header("Access-Control-Allow-Origin:*");
header("Access-Control-Allow-Methods:GET");
header("Access-Control-Allow-Headers:Content-Type");
header("Access-Control-Allow-Credentials:true");

Mais ça ne fonctionne pas. Je ne suis pas sûr d'en-tête de déclaration est ok ou pas en js et php fichier. J'ai essayer beaucoup de choses, mais je ne sais pas comment le résoudre.

Et j'ai déjà essayer dans le navigateur google chrome avec Allow-Control-Allow-Origin extensions. Mais je ne peux pas voir une fenêtre d'avertissement et d'erreur. Je ne sais pas quelle partie est faux. J'ai beaucoup apprécier pour votre suggestion.

  • PAS set Access-Control-* les en-têtes de la requête, l'ajout de "personnalisé" en-têtes de causes pré-vol, et de votre côté serveur permet seulement GET et probablement ne gère pas les pré-vol correctement de toute façon
  • Lorsque vous affichez la requête dans l'onglet réseau, voyez-vous vos en-têtes?
  • tu veux dire j'ai besoin de l'enlever. Droit?
  • oui, je peux voir ma tête.
InformationsquelleAutor Cloud | 2015-12-24