在使用axios發送post請求時,默認的請求頭Content-Type
的屬性值為application/json
,這個時候瀏覽器會分兩次發送請求,首先使用OPTION方法發送請來詢問服務對請求是否支持,若不支持,則報錯,終止請求的發送。因此服務器需要配置Access-Control相關的屬性才能正確響應。下面是express配置處理一個登錄請求的例子:
app.use('/login', (req, res, next) {
//配置跨域所允許的域名
res.header("Access-Control-Allow-Origin", "http://localhost:8080");
//配置允許的請求頭,若請求頭中包含自定義請求頭在這沒配置,則請求不允許,
//如果不配置,報錯:Request header field Content-Type is not allowed by Access-Control-Allow-Headers.
res.header("Access-Control-Allow-Headers", "Content-Type");
//配置允許的請求方法
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
//配置允許發送cookie,不過要注意瀏覽器發送cookie只允許同一個域名下
res.header("Access-Control-Allow-Credentials",true);
})