大廠面經(jīng)大全大廠內(nèi)推 ?
CORS 通過控制 Access-Control-Allow-Origin 控制哪些域名可以共享資" />
時間:2023-02-07 19:16:01 | 來源:建站知識
時間:2023-02-07 19:16:01 來源:建站知識
? 本文收錄于 GitHub 日問: DailyQuestion,內(nèi)含大廠內(nèi)推機會、面經(jīng)大全及若干面試題,每天學習五分鐘,一年進入大廠中。
CORS
通過控制 Access-Control-Allow-Origin
控制哪些域名可以共享資源,取值如下Access-Control-Allow-Origin: <origin> | *
其中 *
代表所有域名,origin
代表指定特定域名,那如何設(shè)置多個域名了?Origin
來設(shè)置響應(yīng)頭 Access-Control-Allow-Origin
」,那 Origin 又是什么東西?Origin
,在瀏覽器中帶 Origin
的邏輯如下Origin
,值為當前域名Origin
Access-Control-Allow-Origin
設(shè)置多域名的邏輯也很清晰了Origin
,證明未跨域,則不作任何處理Origin
,證明跨域,根據(jù) Origin
設(shè)置相應(yīng)的 Access-Control-Allow-Origin: <Origin>
// 獲取 Origin 請求頭const requestOrigin = ctx.get('Origin');// 如果沒有,則跳過if (!requestOrigin) { return await next();}// 設(shè)置響應(yīng)頭ctx.set('Access-Control-Allow-Origin', requestOrigin)
static.shanyue.tech
的跨域資源foo.shanyue.tech
,響應(yīng)頭中返回 Access-Control-Allow-Origin: foo.shanyue.tech
bar.shanyue.tech
,響應(yīng)頭中返回 Access-Control-Allow-Origin: bar.shanyue.tech
foo.shanyue.tech
,響應(yīng)頭中返回 Access-Control-Allow-Origin: foo.shanyue.tech
,被 CDN 緩存bar.shanyue.tech
,因由緩存,響應(yīng)頭中返回 Access-Control-Allow-Origin: foo.shanyue.tech
,跨域出現(xiàn)問題」Vary: Origin
就上場了,代表為不同的 Origin
緩存不同的資源Origin
來設(shè)置響應(yīng)頭 Access-Control-Allow-Origin
」,思路如下Vary: Origin
,避免 CDN 緩存破壞 CORS 配置Origin
,證明未跨域,則不作任何處理Origin
,證明瀏覽器訪問跨域,根據(jù) Origin
設(shè)置相應(yīng)的 Access-Control-Allow-Origin: <Origin>
// 獲取 Origin 請求頭const requestOrigin = ctx.get('Origin');ctx.set('Vary', 'Origin')// 如果沒有,則跳過if (!requestOrigin) { return await next();}// 設(shè)置響應(yīng)頭ctx.set('Access-Control-Allow-Origin', requestOrigin)
? 相關(guān)問題:如何避免 CDN 為 PC 端緩存移動端頁面
?
關(guān)鍵詞:設(shè)置,試題
微信公眾號
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。