我在不同的端口(8000,8001)上运行后端和前端,我无法从Express服务器进行res.redirect(...),浏览器显示CORS错误(Access to XMLHttpRequest at...)。
这是MEVN(Mongo,Express,Vue,Nodejs)应用程序,Vue前端和Express(nodejs)后端运行在不同的端口上。我在后端实现了cors(),它使我的前端可以发出请求(get,post),但后端仍然不能重定向前端页面,使用res.redirect(“...”),因为它显示CORS错误。
// Backend
var cors = require('cors');
app.use(cors())
...
function (req, res, next){ // some middleware on backend
...
res.redirect('http://urltofrontend'); // cause error
// Error msg on Chrome
Access to XMLHttpRequest at 'http://localhost:8001/' (redirected from
'http://localhost:8000/api/login') from origin 'null' has been blocked
by CORS policy: Request header field content-type is not allowed by
Access-Control-Allow-Headers in preflight response.
字符串
我已经实现了cors(),它允许我的前端向我的后端发出http请求,它工作得很好。但是,来自后端的res.redirect(...)被CORS错误阻止。
4条答案
按热度按时间bvn4nwqk1#
要解决浏览器中的CORS错误,您应该将以下HTTP头添加到响应:
字符串
可以通过添加以下代码来实现:
型
2eafrhcq2#
只是我的两分钱…
如果您正在处理身份验证调用并为此使用Cookie,则应配置CORS。为此,你必须记住:
1.允许前端为
AllowedOrigin
1.将
allowCredentials
设置为true
。1.不要对
AllowedOrigin
使用通配符(*)(同样,如果您正在处理cookie/身份验证)。使用protocol
、host
和port
Why(https://stackoverflow.com/a/19744754/4848859)。一个Golang示例(使用gorilla/handler):
字符串
xoshrz7s3#
使用CORS中间件,如
字符串
ivqmmu1c4#
所以我一直有这个问题,后端和前端在不同的端口和阻塞对方的请求。
对我来说有效的解决方案是设置后端的前端代理:Medium article的数据。
待办事项:将
"proxy":<backend_server_link>
添加到前端文件夹的package.json
中。