Как заголовки ответа CORS предотвращают доступ браузера к объекту ответа? - PullRequest
0 голосов
/ 27 июня 2019

Итак, я запускаю два приложения foo.com и bar.com, используя традиционные скрипты cgi на сервере apache. Я делаю запрос AJAX от foo к бару. Запрос делает его заблокированным, выполняется, но, поскольку сервер apache не добавляет заголовки CORS, браузер сообщает, что запрос не выполнен.

Документация CORS по MDN объясняет, что браузер Javascript не знает особенностей сбоя, он просто знает, что ответ не удался.

Мой вопрос: содержит ли объект ответа ответ, возвращаемый моим сценарием cgi, и браузер просто решил показать это как ошибку, поскольку не смог найти заголовок Access-Control-Allow-Origin?

Из моей проверки объекта ответа кажется, что сервер apache вообще не отправлял ответ из вывода скрипта cgi.

Неясно, кто отвечает за сдерживание ответа здесь:

  • Это сервер Apache

  • Это выборка / XMLHTTP API

Примечание: я использовал jquery для выполнения вызовов AJAX

1 Ответ

1 голос
/ 27 июня 2019

Как заголовки ответов CORS запрещают JavaScript-браузеру доступ к объекту ответа?

Нет.Ваш JS не может получить доступ к данным ответа - это поведение по умолчанию .Заголовки CORS могут предоставлять разрешение, которое по умолчанию будет отклонено.

Такая же политика происхождения реализована браузером.Сервер не знает об этом (за исключением случаев, когда он явно настроен для отправки заголовков CORS в ответе).

Браузер получает ответ HTTP, определяет, что разрешение не было предоставлено, и генерируетобъект ответа, говорящий столько, сколько он предоставляет программе JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...