Chrome'daki js konsolundan ve URL çubuğundan vb. Gelen istekler için çalışan node.js için ekspres çerçeve üzerine bir REST API yazdım. Şimdi başka bir uygulamadan gelen istekler için başka bir uygulamada çalışmasını sağlamaya çalışıyorum. etki alanı (CORS).
Javascript ön ucu tarafından otomatik olarak yapılan ilk istek, / api / search? Uri = içindir ve "ön kontrol" SEÇENEKLERİ isteğinde başarısız görünüyor.
Ekspres uygulamamda, aşağıdakileri kullanarak CORS başlıkları ekliyorum:
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();
}
};
ve:
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 }));
});
Chrome konsolundan şu başlıkları alıyorum:
İstek URL'si: http: //furious-night-5419.herokuapp.com/api/search? Uri = http% 3A% 2F% 2Flocalhost% 3A5000% 2Fcollections% 2F1% 2Fdocuments% 2F1
İstek Yöntemi: SEÇENEKLER
Durum Kodu: 200 Tamam
Üstbilgi İste
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
Sorgu Dizesi Parametreleri
uri:http://localhost:5000/collections/1/documents/1
Yanıt Başlıkları
Allow:GET
Connection:keep-alive
Content-Length:3
Content-Type:text/html; charset=utf-8
X-Powered-By:Express
Bu, API uygulaması tarafından gönderilen uygun başlıkların eksikliği gibi görünüyor mu?
Teşekkürler.
OPTIONS
yöntem için bir işleyicinin ihtiyacını anlamıyorum . Birisi sadece uğraşmak yerine neden anlamama yardım eder misinizPOST
yöntemi yerine hem taşımaPOST
veOPTIONS
yöntemi?