angularjs之'Access-Control-Allow-Origin' header 包含多个值之nginx + sails.js
我将使用 Chrome 浏览器跨越两个域:
- 客户:http://vb.localhost:909 (angular.js)
- 后端:http://db.localhost:909/matches (sails.js,端口 1337 上的节点应用程序)
一切都由 nginx 提供。
我收到以下错误:
XMLHttpRequest 无法加载 http://db.localhost:909/matches . 'Access-Control-Allow-Origin' header 包含多个值', *',但只允许一个值。 Origin ' http://vb.localhost:909 ' 因此不允许访问。
这是两个服务器 block 的 nginx.conf:
server {
listen 909;
server_name vb.localhost;
location / {
root "\apps\vb-site\UI\dev";
index index.html;
}
}
server {
listen 909;
server_name db.localhost;
add_header Access-Control-Allow-Origin *;
location / {
proxy_pass http://127.0.0.1:1337;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
在 sails.js 应用程序的 config/cors.js 文件中,我已允许所有域进行 CORS 访问:
origin: '*',
在 nginx 的 db.localhost 服务器 block 中添加通配符“*”之前,似乎添加了一个空白域,因为 Chrome 中的错误是:', *' <- 注意空字符,然后是逗号,然后是 *(通配符)
我的配置哪里出错了?
请您参考如下方法:
Sails.js 在 sails.js 服务器端处理这个问题。无需在 nginx 上添加“Access-Control-Allow-Origin *” header 。
server {
listen 909;
server_name db.localhost;
add_header Access-Control-Allow-Origin *; # <-this line not necessary
location / {
proxy_pass http://127.0.0.1:1337;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
这只是在 config/cors.js 文件,允许所有域 CORS 访问:
allRoutes: true, // <-this line necessary!
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。