Tôi đang gặp vấn đề về cấu hình tên miền chéo bằng nginx và buồm. Vấn đề là nếu tôi nhận được ổ cắm để kết nối đúng cách qua http://domain-server.com/socket.io/
thì yêu cầu RESTful sẽ không thành công. Nếu RESTful hoạt động, socket sẽ không hoạt động.vấn đề cấu hình tên miền chéo sử dụng nginx, buồm và nổi bật
Cài đặt
Khách hàng http://domain.com
server http://server-domain.com
Khách hàng là một ứng dụng sử dụng góc "sails.io.js": "0.10.3"
và cấu hình này io.sails.url = 'http://domain-server.com';
.
Máy chủ là ứng dụng cánh buồm có cả tính năng yêu cầu và ổ cắm RESTful.
Sails CORS cấu hình
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'
};
Sails ổ cắm cấu hình
module.exports.socket {
onConnect: function() {},
onDisconnect: function() {},
authorization: false,
'backwardsCompatibilityFor0.9SocketClients': false,
grant3rdPartyCookie: true,
origins: 'http://domain.com'
};
nginx cấu hình
nhận xét ra là những gì tôi đã fiddled với trong cấu hình nginx không nhiều thành công (cũng t ried địa chỉ khách hàng thay vì *).
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;
}
}
phương pháp dịch vụ angularjs làm cho RESTful gọi
function query(path, attributes) {
return $http({
url: domain + path,
params: attributes,
method: "GET",
widthCredentials: true
});
}
Trong chức năng cấu hình góc
$httpProvider.defaults.useXDomain = true;
Đây là cấu hình hiện tại và đây là kết quả tôi đang trải qua .
Trình duyệt giao diện điều khiển đầu ra
Resource interpreted as Script but transferred with MIME type text/html: "http://domain-server.com/__getcookie".
- Tốt
|>
- Tốt
\___/ 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.
- Không tốt
CẬP NHẬT
Dường như tất cả mọi thứ hoạt động tự hỏi nếu tôi bắt đầu buồm trực tiếp bằng cách sử dụng sails lift
hoặc node app.js
nhưng khi bắt đầu bằng cách sử dụng tập lệnh mới nổi trong tệp .conf
xảy ra sự cố tên miền chéo.
kịch bản mới nổi
#!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
Địa điểm này được lưu trữ ở đâu? Một số máy chủ lưu trữ đám mây (như OpenStack) dường như chặn các tiêu đề CORS khỏi bị gửi đi. – sgress454
Tôi có thể nhận được CORS để làm việc tốt cho RESTful, nó chỉ khi họ làm bên socket.io của điều không còn làm việc. Có vẻ như có xung đột ở đâu đó. – GillesC
Bạn sẽ nhận được gì nếu bạn điều hướng đến 'http: //domain-server.com/login? Password = test & username = test' trong trình duyệt? Đây có phải là trang lỗi nginx không? Bạn có đảo ngược yêu cầu proxy đúng từ nginx đến ứng dụng buồm không? Hoặc là họ trên các cổng khác nhau? – david