このエラーメッセージが表示されました:_Refused to set unsafe header "Origin"
_
このコードを使用する:
_ 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);
}
}
_
何が悪いのですか?このCORSリクエストを機能させるためにヘッダーに何が欠けていますか?
receiveReq.setRequestHeader("Origin", ...)
呼び出しを削除しようとしましたが、Google ChromeがreceiveReq.open()
呼び出しでアクセスエラーをスローします...
どうして?
CORSを含むajaxリクエストにjqueryを使用しているため、これは単なる推測です。
ブラウザはあなたではなくヘッダーを設定することになっていると思います。ヘッダーを設定できた場合、セキュリティ機能の目的に反することになります。
これらのヘッダーを設定せずにリクエストを試し、ブラウザがそれらを設定しているかどうかを確認してください。
CORSでは、呼び出しコードは特別な構成を行う必要はありません。すべてはブラウザで処理する必要があります。リクエストを許可するかどうかを決定するのはサーバーの仕事です。したがって、SOPポリシーに違反するリクエストを作成するときは常に、ブラウザはCORSリクエストを作成しようとします(Originヘッダーが自動的に追加され、場合によってはプリフライトリクエストが作成されます)安全でないヘッダー/メソッド/コンテンツタイプを使用しています。サーバーがCORSをサポートしている場合、サーバーは適切に応答し、次のようなCORS固有の応答ヘッダーを提供することで要求を許可/拒否します。
Access-Control-Allow-Origin: *
Chromeは「localhost」のホスト名に関して非常に制限的です(少なくとも私が使用していたときのことです)。代わりに、コンピュータ名を使用するか、「ホスト」に別のエイリアスを割り当ててください'ファイルです。たとえば、次のようにサイトにアクセスしないでください。
http://localhost:port/myappname
代わりに次を使用します:
http://mymachinename:port/myappname
または
http://mymachinealias:port/myappname
詳しくは 仕様 をご覧ください。