मैंने नोड.जेएस के लिए एक्सप्रेस फ्रेमवर्क पर एक REST API लिखा है जो क्रोम, और URL बार आदि में js कंसोल से अनुरोधों के लिए काम करता है, मैं अब इसे दूसरे ऐप के अनुरोधों के लिए काम करने की कोशिश कर रहा हूं, एक अलग डोमेन (कोर)।
जावास्क्रिप्ट सामने के छोर से स्वचालित रूप से किया गया पहला अनुरोध / एपीआई / खोज है? Uri =, और "प्रीफ़लाइट" विकल्प अनुरोध पर विफल हो रहा है।
अपने एक्सप्रेस ऐप में, मैं कोर हेडर जोड़ रहा हूँ, का उपयोग कर:
var allowCrossDomain = function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');
// intercept OPTIONS method
if ('OPTIONS' == req.method) {
res.send(200);
}
else {
next();
}
};
तथा:
app.configure(function () {
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(allowCrossDomain);
app.use(express.static(path.join(application_root, "public")));
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
क्रोम कंसोल से मुझे ये हेडर मिलते हैं:
अनुरोध URL: http: //furious-night-5419.herokuapp.com/api/search; uri = http% 3A% 2F% 2Flocalhost% 3A5000% 2Fcollections% 2F1% %FFdocuments% 2F1
अनुरोध विधि: विकल्प
स्थिति कोड: 200 ठीक है
प्रमुखों का अनुरोध करें
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:origin, x-annotator-auth-token, accept
Access-Control-Request-Method:GET
Connection:keep-alive
Host:furious-night-5419.herokuapp.com
Origin:http://localhost:5000
Referer:http://localhost:5000/collections/1/documents/1
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5
क्वेरी स्ट्रिंग पैरामीटर
uri:http://localhost:5000/collections/1/documents/1
रिस्पांस हेडर
Allow:GET
Connection:keep-alive
Content-Length:3
Content-Type:text/html; charset=utf-8
X-Powered-By:Express
क्या यह एपीआई अनुप्रयोग द्वारा भेजे जा रहे उचित हेडर की कमी की तरह दिखता है?
धन्यवाद।
PATCH
यदि आप PUT
संसाधन को अद्यतन करने के बजाय इसका उपयोग करना चाहते हैं, तो इसमें शामिल करना चाहते हैं
OPTIONS
विधि के लिए एक हैंडलर की आवश्यकता को नहीं समझता । क्या कोई मुझे यह समझने में मदद कर सकता है किPOST
दोनोंPOST
औरOPTIONS
विधि को संभालने के बजाय सिर्फ विधि को क्यों नहीं हैंडल किया जाए ?