
[英]I get an error (No 'Access-Control-Allow-Origin' header is present on the requested resource) when I access my react app using Heroku
[英]Error in browser console when I do a redirect No 'Access-Control-Allow-Origin' header is present on the requested resource
我有一个运行在http:// localhost:9000的AngularJS应用。 前端应用程序针对http:// localhost:8088发出http请求。 因此,我必须在响应头上设置CORS。
我在客户端添加:
delete $http.defaults.headers.common["X-Requested-With"];
$http.defaults.headers.common["Accept"] = "application/json";
$http.defaults.headers.common["Content-Type"] = "application/json";
在服务器端 (ExpressJS):
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.header("Access-Control-Allow-Origin", "*");
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
next();
});
当我调用// localhost:9000-> // localhost:8088时,一切正常。 但是,当我重定向到其他URL(//api.example.com/authorize)时,在浏览器控制台中出现以下错误: XMLHttpRequest无法加载//api.example.com/authorize?response_type=code。 所请求的资源上没有“ Access-Control-Allow-Origin”标头。 因此,不允许访问原始“空”。
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.header("Access-Control-Allow-Origin", "*");
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
next();
});
app.get('/authorize', function (req, res) {
var response = 'https://api.example.com/authorize?response_type=code';
res.redirect(response);
});
你有什么头绪吗?
看来问题与重定向和CORS有关。 状态代码为301、302、303、307或308的重定向会给您带来错误。 这已被更改,但是现在您需要一种解决方法,例如在不使用重定向的情况下,在响应标头或正文中发送回重定向URL。
这在其他答复中很好地解释了
从那里报价:
在浏览器赶上之前,唯一可行的选择似乎是以下一项或多项:
- 问题重定向仅适用于简单请求。
- 发出305重定向,在Location标头中使用您自己的URL作为“代理”。 由于不建议使用305,因此请准备好对有限的浏览器支持。
- 进行伪造的“重定向”:
- 返回带有元刷新和/或更改Javascript位置的HTML。
- 返回HTML,该HTML具有填充视口的iframe,并将重定向目标作为iframe的源。
- 显示用户必须单击才能访问内容的链接。
最后,我所做的就是将链接放在客户端,这是最简单,最干净的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.