Конфигурация nginx, позволяющая URL-адресам псевдонимов получать доступ к моей текущей ссылке
Моя текущая конфигурация Nginx работает нормально с этим URL: https://myhostname.com/
Но я создал другой псевдоним для того же сервера, скажем, myhostname1
Теперь, когда я пытаюсь получить доступ к URL
это выдает ошибку
XMLHttpRequest не может загрузить https://sg-stg-bms-cdn001.eng.vmware.com//scripts/services/appStatusService.js?pingpong=2831234. Заголовок "Access-Control-Allow-Origin" имеет значение " https://myhostname.com/", которое не равно указанному источнику. Поэтому происхождение " https://myhostname1.com/" не разрешено.
И хост myhostname, и myhostname1 указывают на один и тот же IP-адрес и DNS-запись.
Я попытался добавить эту строку в мою конфигурацию nginx, но это, кажется, не работает
location / {
add_header 'Access-Control-Allow-Origin' '*';
..........
Но все же это не похоже на работу. Может кто-нибудь, пожалуйста, помогите мне, если я пропал.
2 ответа
Эта ссылка, вероятно, более полезна, чем моя сводка, но: либо "включить (/ path / to / sites-enabled)" в конце документа, и в этом месте есть файл конфигурации с подробным описанием включенных сайтов, либо добавить блоки на каждый -сервер сервера (сервер {порт; путь; имя; и т. д.), он должен быть уже в соответствующем файле для сервера {listen 80; имя_сервера myhostname.com; index index.htm; root /path/to/root/folder}),
В этом сообщении говорится, что ваш запрос нарушает политику безопасности javascript того же происхождения. Если вы заходите на сайт через браузер, это сообщение, вероятно, приходит из браузера, а не из nginx. Политика такого же происхождения в безопасности javascript защищает пользователей от вредоносных веб-сайтов, пытающихся использовать JavaScript браузера для взаимодействия с другими веб-сайтами. Без этой изолированной программной среды вредоносная веб-страница могла бы использовать движок JavaScript браузера для взаимодействия с другими веб-сайтами - возможно, изменить пароль электронной почты пользователя, отредактировать ее страницу в facebook и т. Д.
Вы можете выборочно расширить эту защиту, добавив заголовки http для совместного использования между источниками (CORS). Nginx может сделать это для вас. Вот как:
- Если ваш конфиг включает эту директиву,
add_header X-XSS-Protection "1; mode=block";
, удалите его (или закомментируйте). Это удаляет обеспечение безопасности, которое говорит браузерам запрещать CORS. - Выборочное расширение межсайтовых сценариев путем добавления заголовков CORS к запросам. В блоке местоположения каждого хоста добавьте эти директивы:
add_header 'Access-Control-Allow-Origin' "$http_origin" always; add_header 'Access-Control-Allow-Credentials' 'true' always; add_header 'Access-Control-Allow-Methods' 'GET, POST' always; add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With' always;
Использование "$http_origin" ограничивает CORS *.yourdomain.com, но вы также можете использовать 'Access-Control-Allow-Origin' '*' always
Открытие CORS для всех сайтов - более слабая модель безопасности. Более новые версии nginx требуют третьего аргумента (always
в этом примере). Вы упускаете это в своей конфигурации.