私は非常に単純なJSON APIをJavaで作成しています。実際にはオブジェクト座標を扱うProject Zomboidのmodです。これは私のHTTPハンドラがどのように見えるかです:CORSヘッダー 'Access-Control-Allow-Origin'が一致しませんでしたが、それがあります!
public class JSONZomboid implements HttpHandler
{
@Override
public void handle(HttpExchange t) throws IOException {
// HEADERS
Headers headers = t.getResponseHeaders();
headers.set("Content-Type", "text/json");
headers.set("Access-Control-Allow-Origin", "pzmap.crash-override.net");
t.sendResponseHeaders(200,0);
//BODY
OutputStream os = t.getResponseBody();
os.write("{\n".getBytes());
// generate JSON here
os.write("}".getBytes());
os.close();
}
}
は私が接続するためにCORSを有効にする必要があることを意味userscriptを使用して、プロジェクトZomboidマッププロジェクトにこれをロードします。これは、簡単なコードを介して行われます:
PlayerRenderer.prototype.fetchInfo = function() {
$.get("http://127.0.0.1:8000/test", {}, this.displayPoints.bind(this));
}
しかし、私はこのエラーを取得する:
warning http://images.michaelsync.net/images/2007/09/warningicon.png Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://127.0.0.1:8000/test . (Reason: CORS header 'Access-Control-Allow-Origin' does not match 'pzmap.crash-override.net').
でもコンソールで、私ははっきりとエラーが誤解を招くおそれがあり見ることができます:
場合私はCORSがまだ嫌いではなかったが、今はそれを嫌うようになるだろう。許可元ヘッダーに含まれる実際の文字列は何ですか?
ヘッダーには、コンテンツへのアクセスが許可されているサイトのホスト名が必要です。 'pzmap.crash-override.net'でホストされているサイトからあなたのページを読み込んでいるなら、それはうまくいくはずです。エラーは、ヘッダーに含まれている内容を示していますが、ソースドメインの内容ではありません。 – Pointy
リクエストヘッダー( 'Origin'と' Referer')でロード先のサイトを見ることができます。 –
実際には、小さな画面上でそれらの画像の詳細を見ることは非常に難しいです:/ – Pointy