タスクの説明
クライアント/サーバー アーキテクチャでプログラムを作成しています。サーバーはユーザーのブラウザーで実行される JavaScript スクリプトであり、クライアントはユーザーのローカル マシンで実行されるアプリケーションです。このスクリプトは、GET 要求を 127.0.0.1 のポートに送信します。たとえば2000年。クライアントはメッセージを読み、何らかのアクションを実行し、返信をサーバーに送り返します。
問題の説明
このタイプの対話は、クロスオリジン リソース共有と見なされます。ここの資料を読み、適切な cors ヘッダー メッセージを使用してリクエストに応答するプログラムを作成しました。残念ながら、次のエラー メッセージが表示されるようです。
XMLHttpRequest cannot load http://127.0.0.1:2000/?Command=test&Parameters=1234. Origin http://127.0.0.1 is not allowed by Access-Control-Allow-Origin.
完全な HTTP 交換
GET /?Command=test&Parameters=1234 HTTP/1.1
Host: 127.0.0.1:2000
Connection: keep-alive
Origin: http://127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Geco) Chrome/17.0.963.79 Safari/535.11
Accept: */*
Referer: http://127.0.0.1/test/main.php
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
HTTP/1.1 200 OK
Server: Custom-Gnat-Client-v1.0
Access-Control-Allow-Origin: *
Origin: http://127.0.0.1
Content-Length: 12
Keep-Alive: timeout=2, max=100
Connection: Keep-Alive
Content-Type: text/plain
Success
関連コード
main.js で:
var Is_IE = window.XDomainRequest ? true : false;
var Cross_Domain_xmlhttp = Create_Cross_Domain_Request();
function Create_Cross_Domain_Request(){
var request;
if(Is_IE)
request = new window.XDomainRequest();
else{
if(window.XMLHttpRequest){
request=new XMLHttpRequest();
} else {
request=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return request;
}
...
var URL = "http://127.0.0.1:2000/"+"?Command="+Command_String+"&Parameters=" +Parameters;
if (Cross_Domain_xmlhttp){
if(Is_IE){
Cross_Domain_xmlhttp.onload=function(){
console.log(Cross_Domain_xmlhttp.responseText);
}
Cross_Domain_xmlhttp.open("GET", URL, true);
Cross_Domain_xmlhttp.send();
} else {
Cross_Domain_xmlhttp.open('GET', URL, true);
Cross_Domain_xmlhttp.onreadystatechange=function(){
if (Cross_Domain_xmlhttp.readyState==4 && Cross_Domain_xmlhttp.status==200){
console.log(Cross_Domain_xmlhttp.responseText);
}
}
Cross_Domain_xmlhttp.send();
}
} else {
alert("The browser does not support XDomainRequest or XmlHttpRequest");
}
クライアント コードは現在関係ありませんが、リクエストがあれば投稿します。