前端面試之跨域問題

2022-06-30 15:06:14 字數 1164 閱讀 6348

​ 同源策略是一種約定。同源是指"協議+網域名稱+埠"三者相同,就算兩個不同的網域名稱指向同乙個ip位址,也不屬於同源。

​ 同源策略限制以下幾種行為:

為什麼要使用同源策略?同源策略主要是來防止csrf攻擊的,csrf攻擊是指利用使用者的登陸狀態發起惡意請求。但是同源策略並不能完全防止csrf。

​ 跨域是指瀏覽器允許向伺服器傳送跨域請求,從而克服ajax只能同源使用的限制。

​ 常見的跨域場景:

1、jsonp跨域

2、nodejs中介軟體**跨域

3、document.domain + iframe跨域

4、location.hash + iframe跨域

5、window.name + iframe跨域

6、postmessage跨域

7、websocket協議跨域

8、跨域資源共享(cors)

9、nginx**跨源

​ cors是乙個w3c標準,它允許瀏覽器向跨源伺服器,發出xmlhttprequest請求,從而克服了ajax只能同源使用的限制。

​ cors跨域請求分為簡單請求和非簡單請求。

​ 滿足兩個條件之一就屬於簡單請求:

​ 不同時滿足上邊兩個條件,就屬於非簡單請求。

​ 對於簡單請求,瀏覽器直接發出cors請求。簡單來說,就是直接在頭資訊中新增乙個origin欄位,用來說明本次請求來自哪個源(協議+網域名稱+埠)。伺服器根據這個值決定是否同意這次請求。

​ cors請求設定的響應頭欄位,都以access-control-開頭。

​ 預檢請求用的方法是options,表示這個請求是用來詢問的。請求頭資訊裡,關鍵字段是origin,表示這個請求來自哪個源。除了origin欄位,預檢請求的頭資訊包括兩個特殊字段。

​ nginx**跨域實質和cors跨域原理一樣,通過配置檔案設定請求響應頭等字段。

​ nginx配置解決iconfont跨域,在nginx的靜態資源伺服器中加入以下配置。

location /
​ nginx反向**介面跨域。通過nginx配置乙個**伺服器網域名稱(與domain1相同,埠不同)做跳板機,反向**訪問domain2介面,並且可以順便修改cookie中的domain資訊,方便當前域cookie寫入,實現跨域訪問。

前端面試之儲存問題

在瀏覽器中的儲存方式有以下幾種 這幾種儲存方式使用在不同的場景裡,相互之間也有很多的區別。cookie是伺服器傳送到使用者瀏覽器並儲存在本地的一小塊資料。cookie一般由後端設定,並通過response流傳送給前端並設定過期時間。在過期之前,cookie會一直儲存在瀏覽器中,並且每次傳送http請...

前端跨域問題

雖然羅列這麼多,但是我只用過一種 1 jsonp 2 document.domain iframe 3 location.hash iframe 4 window.name iframe 5 postmessage 6 跨域資源共享 cors 7 nginx 8 nodejs中介軟體 9 webso...

前端跨域問題

一 瀏覽器設定跨域 1,mac下chrome瀏覽器跨域 在終端中輸入以下命令 yourname是自己本機使用者名稱 開啟的chrome有 disable web security 相關的提示,說明瀏覽器設定跨域成功。2,window下chrome跨域 這個簡單了,直接右擊選擇chrome的屬性,在快...