Пару раз задавали эту тему, но я до сих пор чего-то не понимаю:
Когда я читаю ответы о
Нет заголовка Access-Control-Allow-Origin
проблема, это говорит параметр должен быть установлен на запрашиваемом сервере, чтобы позволить Междоменные add_header 'Access-Control-Allow-Origin' '*';
.
Но, пожалуйста, скажите мне, почему, когда я спрашиваю почтальона (который является клиентом), он работает как шарм, и у меня есть ответ от запрошенного сервера?
Спасибо
Ответы:
Как комментирует @Musa, похоже, причина в следующем:
Кстати, вот расширение Chrome , чтобы оно работало в вашем браузере (это для Chrome, но вы можете найти его для FF или Safari).
Отметьте здесь, если хотите узнать больше о Cross-Origin и почему он работает для расширений.
источник
Если вы используете веб-сайт и заполняете форму для отправки информации (например, номер социального страхования), вы хотите быть уверены, что информация отправляется на сайт, на который, по вашему мнению, она отправляется. Таким образом, браузеры были созданы, чтобы по умолчанию говорить: «Не отправлять информацию в домен, отличный от посещаемого).
В конце концов, это стало слишком ограничивающим, но идея по умолчанию все еще остается в браузерах. Не позволяйте веб-странице отправлять информацию в другой домен. Но это все проверка браузера. Chrome, firefox и т. Д. Имеют встроенный код, который говорит: «перед отправкой этого запроса мы собираемся проверить, соответствует ли пункт назначения посещаемой странице».
Почтальон (или CURL в строке cmd) не имеет встроенных проверок. Вы вручную взаимодействуете с сайтом, поэтому у вас есть полный контроль над тем, что вы отправляете.
источник
CORS
(Совместное использование ресурсов между источниками) иSOP
(Политика одного источника) - это конфигурации на стороне сервера, которые клиенты решают применять или нет .Относится к клиентам
CSRF
атакой.источник
Хотя все ответы здесь действительно хорошее объяснение того, что такое cors, прямой ответ на ваш вопрос будет из-за следующих различий почтальона и браузера.
Браузер: отправляет
OPTIONS
вызов для проверки типа сервера и получения заголовков перед отправкой любого нового запроса в конечную точку API. Где это проверяетAccess-Control-Allow-Origin
. Принимая это во вниманиеAccess-Control-Allow-Origin
заголовок просто указывает, какие все CROSS ORIGINS разрешены, хотя по умолчанию браузер разрешает только одно и то же происхождение.Почтальон: отправка прямой
GET
,POST
,PUT
, иDELETE
т.д. запрос без проверки , какой тип сервера является и получать заголовокAccess-Control-Allow-Origin
с помощьюOPTIONS
вызова к серверу.источник
Обычно Postman используется для отладки и используется на этапе разработки. Но если вы хотите заблокировать его даже от почтальона, попробуйте это.
источник
app.js
если вы используетеnode app.js
для запуска сервера.Используйте плагин для браузера / Chrome postman, чтобы проверить CORS / SOP как на веб-сайте. Вместо этого используйте настольное приложение, чтобы избежать этих элементов управления.
источник