मैं जावा में एक बहुत ही सरल JSON API बना रहा हूं। यह वास्तव में एक परियोजना ज़ोंबॉइड मोड है जो ऑब्जेक्ट निर्देशांक प्रदान करता है। यह कैसे मेरे HTTP हैंडलर की तरह लग रहा है:सीओआरएस हेडर 'एक्सेस-कंट्रोल-ऑब्जेक्ट-ओरिजिन' मेल नहीं खाता है ... लेकिन यह करता है!
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();
}
}
मैं परियोजना Zomboid नक्शा userscript जिसका मतलब है मैं कनेक्ट करने के लिए CORS सक्षम करने की आवश्यकता का उपयोग कर परियोजना में इस लोड करना चाहते हैं। यह सरल कोड के माध्यम से किया जाता है:
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').
यहां तक कि कंसोल में मैं स्पष्ट रूप से देख सकते हैं त्रुटि भ्रामक है:
हैं मैं पहले से ही कॉरस से नफरत नहीं करता था, मैं अब इसे नफरत करना शुरू कर दूंगा। क्या आप कृपया मुझे बता सकते हैं कि असली स्ट्रिंग क्या है जो मूल हेडर की अनुमति देता है?
शीर्षलेख में उस साइट का होस्टनाम होना चाहिए जिसकी सामग्री तक पहुंच की अनुमति है। यदि आप अपने पृष्ठों को 'pzmap.crash-override.net' पर होस्ट की गई साइट से लोड कर रहे हैं तो इसे काम करना चाहिए। त्रुटि आपको बता रही है कि हेडर में क्या है, स्रोत डोमेन क्या नहीं था। – Pointy
आप देख सकते हैं कि मैं कौन सी साइट लोड हेडर ('उत्पत्ति' और' रेफरर') से लोड कर रहा हूं। –
असल में उन छवियों में थोड़ी सी स्क्रीन पर विस्तार देखना बहुत मुश्किल है:/ – Pointy