node.js - 启用 CORS 的服务器不拒绝请求

标签 node.js express cors restify

我正在尝试使用 express Cors使用我的 resitfy 服务器,它似乎并没有拒绝来自其他 ip 的请求。我在本地工作,所以我尝试将 origin 设置为随机公共(public) ip,但我的所有请求仍在进行中

这是我的路线:

module.exports = function(app) {
    var user = require('./controllers/userController');
    var cors = require('cors');
    var corsOptions = require('./cors.json');


    app.post('/auth/signup', cors(corsOptions),user.createUser);
    app.post('/auth/login', cors(corsOptions), user.validateUser);
    app.post('/auth/generateKeys', cors(corsOptions), user.generateKeys);
    app.post('/auth/generateToken', user.generateToken);
};

这是我的 cors.json 文件,我在其中设置了一个随机 ip:

{
    "origin": "http://172.16.12.123",
    "optionsSuccessStatus": 200,
}

在路线上设置 cors 后,我可以在 postman 中看到以下内容,但请求仍在进行中?我希望访问被拒绝响应。

Access-Control-Allow-Origin →http://172.16.12.123

最佳答案

CORS 配置本身不会导致服务器拒绝请求。您不能仅通过 CORS 配置导致服务器端请求阻塞。

当您配置 CORS 支持时,服务器唯一不同的是发送 Access-Control-Allow-Origin 响应 header 和其他 CORS 响应 header 。就是这样。

跨源限制的实际执行仅由浏览器完成,而不是由服务器完成。

因此,无论您对服务器进行何种服务器端 CORS 配置,服务器仍会继续接受来自所有客户端和来源的请求;换句话说,来自所有来源的所有客户端仍然继续从服务器获得响应,就像它们在其他情况下一样。

但是浏览器只会将跨源请求的响应暴露给在特定源运行的前端 JavaScript 代码,如果请求被发送到的服务器通过响应 Access-Control-Allow-Origin 允许该来源的 header 。

这是您使用 CORS 配置唯一可以做的事情。您不能仅通过执行任何服务器端 CORS 配置来使服务器只接受和响应来自特定来源的请求。为此,您需要使用 CORS 配置以外的其他东西。

关于node.js - 启用 CORS 的服务器不拒绝请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45069689/

相关文章:

javascript - 为什么这一行会导致 Javascript 崩溃?

c++ - 在 node.js 绑定(bind)中实现继承

javascript - 如何限制API只在浏览器运行?

javascript - 无法连接到 socket.io 两次

javascript - 在 Teams 平台上更新 BotFramework v4 中的事件

javascript - D3.js 未定义,快速提供静态文件

node.js - cls Hook 或错误使用中的内存泄漏?

amazon-s3 - S3 CORS配置: restricting to specific domains has no affect?

javascript - 使用 PrototypeJS 进行跨源资源共享

asp.net-core - 对预检请求的响应未通过访问控制检查 : It does not have HTTP ok status. GET 工作 POST PUT DELETE 不工作