मैं nginx और पाल का उपयोग कर क्रॉस डोमेन विन्यास समस्याएं आ रही हैं का उपयोग कर मुद्दों। समस्या यह है कि http://domain-server.com/socket.io/
के माध्यम से ठीक से कनेक्ट करने के लिए सॉकेट अगर मैं मिल तो RESTful अनुरोध विफल हो जाएगा है। यदि रीस्टफुल काम करता है तो सॉकेट नहीं होगा।क्रॉस डोमेन विन्यास nginx, पाल और नवोदय
सेटअप
ग्राहक http://domain.com
सर्वर http://server-domain.com
ग्राहक "sails.io.js": "0.10.3"
और इस config io.sails.url = 'http://domain-server.com';
का उपयोग कर एक कोणीय अनुप्रयोग है।
सर्वर दोनों RESTful अनुरोध और सॉकेट सुविधाओं के साथ एक पाल आवेदन है।
पाल CORS config
module.exports.cors = {
allRoutes: true,
origin: 'http://domain.com',
credentials: true,
methods: 'GET, POST, PUT, DELETE, OPTIONS, HEAD',
headers: 'content-type,Access-Control-Allow-Origin'
};
पाल सॉकेट config
module.exports.socket {
onConnect: function() {},
onDisconnect: function() {},
authorization: false,
'backwardsCompatibilityFor0.9SocketClients': false,
grant3rdPartyCookie: true,
origins: 'http://domain.com'
};
nginx config
बाहर टिप्पणी की है कि मैं क्या बिना nginx विन्यास में साथ fiddled गए हैं बहुत सफलता (टी भी * के बजाय ग्राहक पते पर भरोसा किया।
server {
listen 80;
server_name domain-server.com;
#add_header Access-Control-Allow-Origin *;
location/{
# add_header Access-Control-Allow-Origin *;
proxy_pass http://localhost:1337;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
# proxy_set_header Access-Control-Allow-Origin *;
proxy_cache_bypass $http_upgrade;
}
}
AngularJS सेवा विधि RESTful बनाने कॉल
function query(path, attributes) {
return $http({
url: domain + path,
params: attributes,
method: "GET",
widthCredentials: true
});
}
कोणीय config समारोह
$httpProvider.defaults.useXDomain = true;
यह वर्तमान विन्यास है और यहाँ में परिणाम मैं का सामना कर रहा हूँ कर रहे हैं ।
ब्राउज़र सांत्वना उत्पादन
Resource interpreted as Script but transferred with MIME type text/html: "http://domain-server.com/__getcookie".
- अच्छा
|>
- अच्छा
\___/ sails.io.js:200 io.socket connected successfully.
XMLHttpRequest cannot load http://domain-server.com/login?password=test&username=test. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://domain.com' is therefore not allowed access.
- अच्छा नहीं
अद्यतन
ऐसा लगता है सब कुछ की तरह अगर मैं सीधे अभी तक sails lift
या node app.js
का उपयोग कर पाल शुरू जब एक .conf
फ़ाइल क्रॉस डोमेन समस्या इसलिए होती है में नवोदय स्क्रिप्ट का उपयोग कर यह शुरू कर आश्चर्य काम करता है।
नवोदय स्क्रिप्ट
#!upstart
description "demo"
author "gillesc"
start on (local-filesystems and net-device-up IFACE=eth0)
stop on shutdown
respawn
respawn limit 5 60
script
exec /usr/bin/node /var/www/apps/domain-server.com/app.js > /var/www/apps/domain-server.com/server.log 2>&1
end script
यह होस्ट किया गया है? कुछ क्लाउड होस्ट (जैसे ओपनस्टैक) सीओआरएस हेडर को भेजने से रोकते हैं। – sgress454
मैं सीओआरएस को रीस्टफुल के लिए ठीक काम करने के लिए प्राप्त कर सकता हूं, बस जब वे सॉकेट करते हैं तो चीज का काम नहीं होता है। लगता है जैसे कहीं एक संघर्ष है। – GillesC
यदि आप ब्राउज़र में 'http: //domain-server.com/login? Password = test & username = test' पर नेविगेट करते हैं तो आपको क्या मिलता है? क्या यह एक nginx त्रुटि पृष्ठ है? क्या आप nginx से sails अनुप्रयोग में ठीक से प्रॉक्सीइंग अनुरोधों को उलट रहे हैं? या वे विभिन्न बंदरगाहों पर हैं? – david