【问题标题】:Redirect blocked by CORS重定向被 CORS 阻止
【发布时间】:2018-12-23 20:08:46
【问题描述】:

我正在以 HttpServletResponse 的形式从 POST API 向 adfs 服务器发送重定向,其中包含状态为 302 的 URL,但它给出了以下错误

XMLHttpRequest 无法加载资源 A。从资源 A 重定向到 资源 B 已被 CORS 策略阻止:否 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://localhost:9000” 访问。

其中资源 A 是我在“http://localhost:9000”上运行的 api,资源 B 是 adfs 服务器。

我将 API 中的 access-control-allow-origin 标头也设置为“*”。

当我使用 AngularJS 从我的 api 重定向到 Google 时,它​​会成功重定向。我是否需要更改 Web 中的 .htaccess 文件或需要更改 API?

我已经检查过了

How does Access-Control-Allow-Origin header work?

Redirect from A has been blocked by CORS policy. Origin B is therefore not allowed access

Understanding XMLHttpRequest over CORS (responseText)

【问题讨论】:

  • 我认为您需要在您的 adfs 服务器上允许访问控制来源。你可以在那里找到:stackoverflow.com/questions/44905898/…
  • 我已经检查过了。在 adfs 服务器上是允许的。

标签: java angularjs spring cors


【解决方案1】:

302 重定向在 XHR 请求中是不可能的。这就是浏览器的工作方式。浏览器不会重定向到该页面,而是将返回的 url 作为 API 调用,即另一个 XHR 请求。您需要使用前端应用程序传回重定向 url 进行重定向。

因为,我从 angular 调用了一个 api,而作为响应,API 正在重定向到 HTTP 状态为 302 的 adfs 服务器。这将被 CORS 阻止。

我通过将重定向 url 作为 API 的响应而不是 HTTP 302 重定向发送到 Angular 应用程序来解决这个问题,然后使用

$window.location.href=JSON.parse(result.data) //result.data 包含来自 api 的重定向 url

【讨论】:

    【解决方案2】:

    请求被“adfs 服务器”阻止,因为请求来源不明。您应该识别您的机器,因此“adfs 服务器”代理允许您拨打电话。 (这是为了防止来自未知来源的请求)

    【讨论】:

      猜你喜欢
      • 2018-10-12
      • 2018-07-20
      • 2021-01-23
      • 1970-01-01
      • 1970-01-01
      • 2018-01-09
      • 2020-11-11
      • 2021-04-18
      • 2021-05-28
      相关资源
      最近更新 更多