Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.03.2021, 07:21
Zea Zea вне форума
Новичок на форуме
Отправить личное сообщение для Zea Посмотреть профиль Найти все сообщения от Zea
 
Регистрация: 26.03.2021
Сообщений: 1

Политика CORS блокирует отправку POST запроса на другой домен
Всем привет. Такая проблема: нужно отправить POST запрос с одного сайта (1), на сервер другого (2), но CORS блокирует запрос. Нужно что бы сервер 2 получил тело POST запроса, никакого ответа на сайте 1 получать не нужно. Можно ли это как-то реализовать и обойти блокировку CORS не имея доступа к серверу 1?
Ответить с цитированием
  #2 (permalink)  
Старый 26.03.2021, 07:47
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,762

Сообщение от Zea
не имея доступа к серверу 1?
Значит настраивать сервер 2.
Сообщение от Zea
и обойти блокировку CORS
Ну не для того делают блокировки, что бы давать возможности их обходить.
Ответить с цитированием
  #3 (permalink)  
Старый 26.03.2021, 09:24
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,592

Zea, сайт 2 получает запрос. Это сайт 1 не может получить ответ на этот запрос из-за CORS, но он вам и не нужен.
Можете указать mode: "no-cors" для fetch, чтоб не было ошибок.
__________________
29375, 35

Последний раз редактировалось Aetae, 26.03.2021 в 09:27.
Ответить с цитированием
  #4 (permalink)  
Старый 26.03.2021, 18:18
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,762

Сообщение от Rise
CORS блокирует ответы, а не запросы.
Когда как.
Если, например, в запросе будет указано
Content-Type: application/json
То браузер сделает сначала предварительный запрос. И, не получив от сервера ответа
Access-Control-Request-Headers: Content-Type
не будет делать основной запрос.
Ответить с цитированием
  #5 (permalink)  
Старый 27.03.2021, 16:09
Новичок на форуме
Отправить личное сообщение для Detrimon Посмотреть профиль Найти все сообщения от Detrimon
 
Регистрация: 24.03.2010
Сообщений: 5

CORS - это в первую очередь надстройка над браузером и как уже выше было сказано, когда браузер пытается отправить POST-запрос на сервер, с которым в рамках данной сессии он не работал (т.е. сервер, которые в терминах CORS не является Origin), то браузер вначале посылает Preflight-request (тип OPTIONS), который должен вернуть необходимые заголовки Access-Control-*-* для того, чтобы браузер смог выполнить POST-запрос (именно браузер выполнить, а не сервер принять).

Если у вас задача обеспечить такой CORS-доступ для сотен, тысяч пользователей (т.е. типичный сайт, который должен брать данные с другого сервера), то в этом случае на сервере 2 вам необходимо настроить, чтобы веб-сервер отдавать необходимые заголовки в случае обращения с Origin = вашему серверу 1 (т.е. они друг другу доверяют).

А если, например, у вас какая-то другая задача, например с localhost пытаться обратить вначале к серверу 1, а потом с этого localhost обратиться к серверу 2 (с браузера, конечно), то как правило в браузерах можно отключить CORS. Например, для Google Chrome, его нужно запустить так: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --disable-gpu --user-data-dir="D:\ChromeTemp"
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как повторить нажатие кнопки после неудачного POST запроса? antonhauff AJAX и COMET 6 21.02.2018 18:03