如何向不支持CORS的服务器发出请求?

时间:2019-09-24 19:36:15

标签: javascript angular http cors

我正在使用Angular Web应用程序。我需要使用XML主体向无法控制的服务器发出POST请求。该请求需要一个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 :(得分:0)

为保护最终用户,浏览器阻止了对其他服务器的请求。是的,您可以使用cors浏览器扩展程序,但这只是一个临时解决方案。

您需要在服务器“ my-server.com”上设置终结点,以使用Web应用程序的发布请求。从那里,您可以与您不拥有的服务器进行通信,并设置适当的身份验证标头等。

相关问题