我正在尝试使用 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/