CORS 中间件
此示例演示如何使用中间件处理跨源 http 请求。
CORS 背景
CORS 是所有主流浏览器采用的一种访问控制方法,用于避免它们固有的跨脚本漏洞。在一般的浏览器安全性中,脚本应该保持所有 XHR 请求只能由提供相同脚本的源提供。如果 XHR 请求是在脚本所属的域之外发出的,则响应将被拒绝。
但是,如果浏览器支持 CORS,则如果响应中的适当标头指示允许发出请求的域,则会对此规则作出例外。以下标头表示允许任何域:
Access-Control-Allow-Origin: *
例
以下示例显示了 Express 中间件如何在其响应中包含这些标头。
app.use(function(request, response, next){
response.header('Access-Control-Allow-Origin', '*');
response.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
response.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');
//Handle Preflight
if (reqest.method === 'OPTIONS') {
response.status(200).send();
}
else {
next();
}
});
处理预检
上面例子的后半部分处理 Preflight。如果请求包含自定义标头,则预检是浏览器发送到测试 CORS 的特殊 OPTIONS 请求。