同源策略是一種約定。同源是指"協議+網域名稱+埠"三者相同,就算兩個不同的網域名稱指向同乙個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的屬性,在快...