我在不同的端口(80008001)上运行后端和前端,无法从express服务器生成res.redirect(…),并且浏览器显示CORS错误(访问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(),它允许我的前端向我的后端发出超文本传输协议请求,并且运行良好。但是,后端的res.redirect(…)被CORS错误阻止了。
使用CORS中间件,如
var enableCORS = function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type, token, Content-Length, X-Requested-With, *');
if ('OPTIONS' === req.method) {
res.sendStatus(200);
} else {
next();
}
};
app.all("/*", function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type, token, Content-Length, X-Requested-With, *');
next();
});
app.use(enableCORS);
只是我的两分钱…
AlloweOrigin
lowCreentals
设置为true
。AlloweOrigin
使用通配符(*)(同样,如果您正在处理cookie/身份验证)。使用协议
、主机
和端口
[为什么]。Golang示例(使用gorilla/handlers):
handlers.CORS(
// allowCredentials = true
handlers.AllowCredentials(),
// Not using TLS, localhost, port 8080
handlers.AllowedOrigins([]string{"http://localhost:8080"}),
handlers.AllowedMethods([]string{"GET", "POST", "PUT", "HEAD", "OPTIONS"}),
handlers.AllowedHeaders([]string{"X-Requested-With", "Content-Type", "Authorization"}),
)
要解决浏览器中的CORS错误,您应该在响应中添加以下HTTP标头:
Access-Control-Allow-Headers: Content-Type
您可以通过添加以下代码来执行此操作:
app.use(cors({
'allowedHeaders': ['Content-Type'],
'origin': '*',
'preflightContinue': true
}));
当我运行时,我收到这个错误: 我有一个客户端文件夹,其中包含Vue应用程序,该文件夹与我的api文件夹位于同一目录中,其中包含后端。 当我在正确的目录中单独运行启动脚本时,每个脚本都可以完美地独立运行。这是我的脚本: 我知道C:\Users\reaga\Desktop\Projects\weather-app-v3\api\client/package。json不存在,但我不知道它为什么会首先出现
我试图在Angular 9中构建前端应用程序,在spring boot中构建后端应用程序。 使用KeyClope对用户进行身份验证和授权。 我在Key斗篷上创建了两个客户端,一个前端是公共访问类型,一个后端是仅承载的。 angular应用程序是使用本教程配置的https://www.npmjs.com/package/keycloak-angular spring boot应用程序配置了此应用程序
本文向大家介绍Vue前后端不同端口的实现方法,包括了Vue前后端不同端口的实现方法的使用技巧和注意事项,需要的朋友参考一下 前端Vue 8080端口,后端Node.js 8085端口 主要记录下前后端不同端口遇到的问题 1、写服务器端程序,我的在(node_proxy/index.js)下 这段代码很重要,要是没有的话会出现 No 'Access-Control-Allow-Origin' hea
这是我在这里的第一个问题。我已经花了几个小时阅读主题,但以前从未发过一个问题。 此刻我有2个项目:一个前端和一个后端。为了使开发更快、更容易、更简单,我想把这两个项目放在一起。我知道有些开发人员不喜欢这种架构方式,但在我的情况下,它是最好的解决方案,一个项目,包括前端和后端。 具体:在开发区运行一个debug-webserver,我的angular应用程序运行在eq localhost上,而我的s
我想部署一个tomcat服务器,以便它同时侦听两个端口(都用于超文本传输协议)。 为了确保您正确理解这个需求,我们只有一个服务器实例,但希望侦听HTTP协议的两个端口。例如,任何人都可以使用端口号7080和8080访问部署在我的服务器中的应用程序 有可能做到吗?如果可能,我们如何实现这一点?
我正在编写一个web应用程序,其中客户端将(JSON)表单数据发布到,服务器也应该使用JSON进行响应。服务器端使用java servlet编写,运行在Tomcat上,客户端使用Angular 7编写。不幸的是,即使在通过HTTP头启用CORS之后,我仍然面临CORS错误。我有什么遗漏吗? 这就是我在客户端遇到的错误:在'http://localhost:8080/mysocial/signIn“