ReactJS 发送 GET 请求,响应 302 重定向,收到 CORS 错误

Posted

技术标签:

【中文标题】ReactJS 发送 GET 请求,响应 302 重定向,收到 CORS 错误【英文标题】:ReactJS sent GET request, responded with 302 redirect, received CORS error 【发布时间】:2018-03-12 21:01:10 【问题描述】:

这是我的堆栈:

    前端服务器:Node + ReactJS (f.com) 后端服务器 (API):Golang (b.com)

我在开发环境中执行此操作,我使用create-react-app 通过npm start 命令运行我的前端服务器。我想使用sso.example.com/login 提供的 SSO 执行身份验证。理想情况下,只要在没有适当授权的情况下向后端服务器发出请求,就会通过 HTTP 302 重定向到 SSO 页面进行响应。所以顺序是:

    ReactJS 发送 GET 请求到b.com/users Golang 回复 http.Redirect("sso.example.com/login") ReactJS 应用程序从 sso.example.com 收到 CORS 错误,我无法控制添加 Access-Control-Allow-Origin:* 响应标头

如何成功重定向我的 GET 请求?

【问题讨论】:

您的 React 应用是否从 b.comsso.example.com 获得 cors 错误响应? @mkopriva 哦,是的,我刚刚将其添加到问题中。来自sso.example.com 如果 sso.example.com 不允许跨源请求并且您无权访问其服务器来修改访问控制,那么我不确定您的 react 应用程序是否能够访问其资源. 【参考方案1】:

在您的情况下,在客户端的浏览器中进行重定向会更容易,因此您不会遇到 CORS 问题(因为您是直接从 SSO 网站 url 访问它)。

你可以用 react 来做,这很复杂:Programmatically navigate using react router V4

或者使用纯 javascript 使用 window,这很简单,但可能会导致浏览历史记录出现问题:

window.location.href = "https://www.example.com";

https://appendto.com/2016/04/javascript-redirect-how-to-redirect-a-web-page-with-javascript/

【讨论】:

啊,好吧,我就是这么想的。我只是想在这种情况下是否可以采取任何措施来避免重定向时出现 CORS。谢谢你的建议!

以上是关于ReactJS 发送 GET 请求,响应 302 重定向,收到 CORS 错误的主要内容,如果未能解决你的问题,请参考以下文章

在 JavaScript 中捕获 302 FOUND

IE 11问题-自动缓存来自GET请求的响应-Reactjs

302 响应错误

1.爬虫基本介绍

AngularJS:如何解析 302 的响应

301与302的区别