Как сделать запрос на сервер, который не поддерживает CORS? - PullRequest
0 голосов
/ 24 сентября 2019

Я работаю над веб-приложением Angular.Мне нужно сделать запрос POST с телом XML на сервер, который я не могу контролировать.Для запроса требуется заголовок Authorization.Я попробовал следующее:

  • Отправить запрос напрямую: Работает только тогда, когда приложение обслуживается на http://localhost.В противном случае браузер отображает следующую ошибку: Access to XMLHttpRequest at 'server.com' from origin 'my-server.com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource..
  • Использовать расширение браузера, которое добавляет отсутствующий заголовок к ответам: Небезопасно, поскольку расширение добавляет Access-Control-Allow-Origin: * к ответам от всехдомены и этот заголовок разрешает запросы от любого домена.
  • Отключить защиту браузера: Я запустил Chrome с помощью этой команды: chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security.Работает, когда приложение работает на сервере HTTPS.Однако это небезопасно по тем же причинам, что и для предыдущего подхода.
  • Использовать сторонний прокси: Работает для нескольких запросов, но сервер блокирует IP прокси, потому что запросыиз всех клиентов проходят через один и тот же прокси.

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

Можно ли добавить Access-Control-Allow-Origin: my-server.com ко всем ответам или добавить заголовок только для определенного сервера?Можно ли перенаправить каждый запрос на другой IP-адрес, чтобы сервер не блокировал все мои клиенты?Есть ли другие обходные пути?

1 Ответ

0 голосов
/ 24 сентября 2019

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

Вам необходимо настроить конечную точку на своем сервере my-server.com для приема запросов веб-приложений.Оттуда вы можете связываться с сервером, который вам не принадлежит, и настраивать правильные заголовки аутентификации.

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