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 請求。