带有CORS中间件的ExpressJS服务器上的CORS错误已经添加
我有一个在AWS Lightsail上托管的前端和Express JS服务器,该服务器将Ubuntu与Nginx一起使用。
服务器设置为反向代理。 配置
location /api/ {
proxy_pass http://localhost:4000/api/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
这是我正在尝试从客户端发出发布请求(登录)以表达
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource
at http://localhost:4000/api/users/login. (Reason: CORS request did not succeed). Status
code: (null).
的
const cors = require('cors');
const app = express();
const corsOption = {origin: "http://18.193.59.75:80"};
app.options("/*", 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, Authorization, Content-Length, X-Requested-With');
res.send(200);});
//app.use(cors(corsOptions));
//app.options('*', cors(corsOptions));
I have a frontend and express js server hosted on aws lightsail that uses ubuntu with nginx.
The server is set as a reversed proxy. Here is the config
location /api/ {
proxy_pass http://localhost:4000/api/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
I'm trying to make a post request (login) from client to express but I get this
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource
at http://localhost:4000/api/users/login. (Reason: CORS request did not succeed). Status
code: (null).
but I have enabled cors on my server in multiple ways but with no success
const cors = require('cors');
const app = express();
const corsOption = {origin: "http://18.193.59.75:80"};
app.options("/*", 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, Authorization, Content-Length, X-Requested-With');
res.send(200);});
//app.use(cors(corsOptions));
//app.options('*', cors(corsOptions));
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
添加
next()
处理程序,如下所示,查看是否解决了您的问题。Add the
next()
handler as given below and see if resolves your issue.我仍然在使用CORS上的移动设备上遇到问题,我删除了所有配置
'http:// localhost:4000'
我的服务器正在运行但它在服务器上运行,因此要到达它,我必须称其为http://18.193.59.75/api/ Endpoint
和NGINX将重定向到'http:// localhost:4000'
带代理通行证。这是我的nginx config
和我的index.js
。
I still had problems on mobile with cors and I erased all the config and did it all again just to realize that in my front-end I called
'http://localhost:4000'
where my server was running but it was running on the server so to reach it I had to call ithttp://18.193.59.75/api/endpoint
and the nginx will redirect to'http://localhost:4000'
with proxy pass.here is my nginx config
and my index.js from express
and the domain that I use from front-end to call my express server