angularjs之'Access-Control-Allow-Origin' header 包含多个值之nginx + sails.js

jpfss 阅读:21 2024-10-25 08:56:14 评论:0

我将使用 Chrome 浏览器跨越两个域:

一切都由 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! 


标签:nginx
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号