2014-10-29 1 views
2

Я собираюсь через два домена с помощью Chrome браузер:'Access-Control-Allow-Origin' заголовок содержит несколько значений - Nginx + sails.js

все обслуживается nginx.

Я получаю следующее сообщение об ошибке:

XMLHttpRequest не может загрузить http://db.localhost:909/matches. Заголовок 'Access-Control-Allow-Origin' содержит несколько значений ', *', но разрешено только одно. Происхождение 'http://vb.localhost:909' поэтому не разрешено.

Вот 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, в конфигурационном файле/cors.js, я позволил всем получить доступ к доменам CORS :

origin: '*', 

это выглядит как пустой домен добавляется перед групповым символом «*» добавляется в db.localhost сервера блока Nginx, так как ошибка в Chrome является: «*» < - обратите внимание на пустой символ, затем на commma, затем * (подстановочный знак)

Где я ошибаюсь в конфигурации?

+1

Выстрел это темный, но должен как Nginx и паруса устанавливают тот же заголовок. Я только установил паруса. Вы пробовали не устанавливать его в nginx? – Meeker

ответ

4

Sails.js позаботится об этом на стороне сервера sails.js. Не нужно было добавлять заголовок «Access-Control-Allow-Origin *» на nginx.

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; 

    } 

Это был лишь вопрос добавления правильного свойства в конфигурации/cors.js файл, чтобы все домены CORS доступ:

allRoutes: true, // <-this line necessary! 
+0

В парусах 0.11.0 по умолчанию все маршруты являются ложными. Раскомментируйте и сделайте его 'allRoutes: true,' в каталоге cors.js в config. Спасибо! –

Смежные вопросы