我试图在我的resitfy服务器上使用Express Cors,但它似乎并未拒绝来自其他IP的请求。我在本地工作,所以我尝试将来源设置为随机的公共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后,我可以在邮递员中看到以下内容,但请求仍在处理中?我希望访问被拒绝。
Access-Control-Allow-Origin→ http://172.16.12.123
单独的CORS配置不会导致服务器拒绝来自任何IP的请求。您不能仅通过CORS配置来做到这一点。
当您配置带有CORS支持的服务器时,服务器所做的唯一不同就是仅发送Access-Control-Allow- Origin响应标头和其他CORS响应标头。而已。
Access-Control-Allow- Origin
跨域限制的实际实施仅由浏览器完成,而不由服务器完成。
因此,无论您在服务器端进行任何CORS配置,服务器都将继续接受来自所有客户端的请求,否则将继续起源。换句话说,所有来源的所有客户端仍然继续从服务器获取响应,就像他们本应那样。
但是,如果发送请求的服务器通过响应允许该来源的标头来选择允许请求,则 浏览器 只会将跨域请求的响应公开给在特定来源运行的前端JavaScript代码Access-Control-Allow-Origin。
Access-Control-Allow-Origin
那是使用CORS配置可以做的唯一事情。您不能仅通过执行任何服务器端CORS配置就使服务器仅接受并响应来自特定来源的请求。为此,您需要使用的不仅仅是CORS配置。