4

Если HTTP-заголовок Access-Control-Allow-Origin отсутствует в ответе на предварительную проверку CORS (совместного использования ресурсов между источниками), это означает:

  • Сервер не поддерживает CORS? Или же,
  • Сервер запрещает доступ?

Если сервер не поддерживает CORS, очевидно, что заголовок будет отсутствовать.

Но если он поддерживает CORS, значит ли это, что доступ запрещен?

И наоборот, что должен делать сервер, реализующий CORS, чтобы сообщить клиенту, что доступ запрещен из-за CORS? Должен ли он отвечать со статусом как 403 Forbidden?

Каждый источник, который я нашел, объясняет, какие заголовки добавляются для обеспечения междоменного доступа, но не объясняет, что делать, чтобы запретить доступ.

** Редактировать: неправильно заданный вопрос, мой плохой, см. Объяснение ниже **

Фокус моего вопроса кажется не по теме по сравнению с тем, что я ожидал. На самом деле ответ сфокусирован на конфигурации сервера, но мне был интересен протокол по HTTP.

Чтобы быть более точным, я поставил вопрос, потому что я пытался получить доступ к серверу с перекрестным запросом и:

  • Сервер не включал заголовки CORS, в то время как мой XMLHttpRequest включал их
  • браузер принимал перекрестные запросы от swf медиа
  • Я проверил реферер медиа и его iframe действительно отличался от цели запросов
  • Я даже не знал, реализовал ли сервер CORS или нет
  • Я не владею сервером

Мой низкий уровень понимания CORS внутри HTTP и тот факт, что были приняты какие-то перекрестные запросы, заставляют меня задуматься, отклоняет ли сервер мои запросы и что я делаю неправильно.

Я выложу ответ, так как считаю, что с тех пор решил его.

2 ответа2

3

Междоменный доступ запрещен по умолчанию, хотя это считается угрозой безопасности. Чтобы запретить доступ, вам нужно удалить конфигурацию, которая разрешает междоменные вызовы.

Новая установка веб-сервера не позволяет использовать CORS из коробки, по крайней мере, для IIS, который я недавно использовал.

Проверьте, как (не) настраивать различные веб-серверы, чтобы (запрещать) разрешать CORS: http://enable-cors.org/server.html

0

Как сказал @mimo,

Междоменный доступ по умолчанию запрещен

тогда нечего делать, чтобы отключить CORS. Это хорошо отвечает на оригинальный вопрос.

Как объясняет редактирование, я был смущен отчасти потому, что где-то SWF-объект делал междоменный домен, в то время как XMLHttpRequest из этого же домена был отклонен. Решение: SWF не связан с политиками XHR (SOP (того же происхождения) или CORS). Это означает, что в эксперименте не было никаких проблем, что заставило меня прийти и задать вопрос: сервер не реализовал CORS, и носитель на странице также не использовал его, в то время как XHR использовал CORS и отказывал.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .