jQuery ajax設定
$.ajax({
....
xhrFields: {
withCredentials: true
},
....
});
如果是跨網域的ajax request,這段一定要加,不然就算server端的cors有設好,到瀏覽器這裡還是會擋掉http auth認證。同網域下(同http協定、網域和port)可省略。
用來記錄人生的點點滴滴,包括學習記錄、工作、生活、觀察……
jQuery ajax設定
$.ajax({
....
xhrFields: {
withCredentials: true
},
....
});
如果是跨網域的ajax request,這段一定要加,不然就算server端的cors有設好,到瀏覽器這裡還是會擋掉http auth認證。同網域下(同http協定、網域和port)可省略。
cors的機制是,當跨網域透過ajax要求資料時,瀏覽器會先向來源網站詢問是否允許跨網域要求資料,此為prelight request,只回傳相關headers,不輸出任何內容。
如果來源網站有回應cors相關header時,並且ajax request符合headers規範的條件,瀏覽器就會放行連線。若來源網站沒有回應cors相關headers時,視為不允許跨網域連線。
這限制的執行是由瀏覽器端來負責,若瀏覽器不實作cors機制,就算來源網站有正常回覆 cors headers也不會有效果。
閱讀全文〈CORS的簡述及Yii2設定〉先建立一個yii2專案,然後安裝這個extension。
底下為Yii2設定的部份,是設定一個 module以及在bootstrap階段就執行oauth2 module,和extension的說明有些不太一樣。
閱讀全文〈用Yii2建立Oauth2 server〉由request產生token,丟給response的cookie(見request::generateCsrfToken())。
當response::send()的時候會一併呼叫response::sendCookies()(在response::sendHeaders()),
如果request有丟給response csrfToken的cookie時,
這時就會設定csrfToken到cookie裡。 閱讀全文〈Yii2 crsf的機制〉