Refusé de définir l'en-tête dangereux "Origine" lors de l'utilisation de xmlHttpRequest de Google Chrome
Ai ce message d'erreur:
Refused to set unsafe header "Origin"
L'aide de ce code:
function getResponse() {
document.getElementById("_receivedMsgLabel").innerHTML += "getResponse() called.<br/>";
if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {
receiveReq.open("GET", "http://L45723:1802", true, "server", "server123"); //must use L45723:1802 at work.
receiveReq.onreadystatechange = handleReceiveMessage;
receiveReq.setRequestHeader("Origin", "http://localhost/");
receiveReq.setRequestHeader("Access-Control-Request-Origin", "http://localhost");
receiveReq.timeout = 0;
var currentDate = new Date();
var sendMessage = JSON.stringify({
SendTimestamp: currentDate,
Message: "Message 1",
Browser: navigator.appName
});
receiveReq.send(sendMessage);
}
}
Ce que je fais mal? Ce qui me manque dans l'en-tête pour faire de cette SCRO demande de travail?
J'ai essayé de supprimer les receiveReq.setRequestHeader("Origin", ...)
appel, mais Google Chrome déclenche une erreur d'accès sur mon receiveReq.open()
appel...
Pourquoi?
source d'informationauteur Derrick LAU
Vous devez vous connecter pour publier un commentaire.
C'est juste une supposition, comme je l'ai utiliser jquery pour les requêtes ajax, y compris de la SCRO.
Je pense que le navigateur est censé définir l'en-tête, pas vous. Si vous étiez en mesure de définir l'en-tête, qui irait à l'encontre de l'objectif de la fonction de sécurité.
Essayer la demande sans la création de ces en-têtes et voir si le navigateur jeux pour vous.
Dans la SCRO le code d'appel n'a pas à faire aucune configuration spéciale. Tout doit être géré par le navigateur. C'est le serveur de décider si la demande devrait être autorisé ou non. Donc, à tout moment vous faites une demande qui rompt SOP politique, le navigateur va essayer de faire un SCRO demande pour vous (il va ajouter un en-tête d'Origine automatiquement, et la possibilité de faire une demande de contrôle en amont si vous utilisez certains dangereuses en-têtes/méthodes/les types de contenu). Si le serveur prend en charge la SCRO il répondra correctement et autoriser/interdire la demande en fournissant les catégories de documents spécifiques en-têtes de réponse comme
Garder à l'esprit que Chrome est très restrictive sur 'localhost' nom d'hôte. (Au moins, c'était quand je travaillais avec elle). Au lieu d'utiliser votre nom de l'ordinateur ou de l'assigner un alias dans le fichier hosts. Ainsi, par exemple, ne pas accéder à votre site comme:
Au lieu d'utilisation:
ou
Pour plus de détails, veuillez consulter spécification.
Êtes-vous de travail inter-domaine?
Essayer de Brian solution S ou essayez ceci:
au lieu de localhost juste passer quelque chose... et de voir ce qui se passe.