揭開跨域的面紗(上)

2021-08-03 10:41:23 字數 777 閱讀 7230

首先,我們想象乙個場景:今天你登入了建設銀行的官網(某些資訊會存到你的cookie上),碰巧你同時開啟了個evil的網頁,如果這個evil的網頁可以通過cookie獲取到你銀行卡的賬號密碼,天啊! 這個世界太危險了。

所以,我們需要避免其他**能執行來自建設銀行的指令碼,大牛們就想出了個約定——」同源策略」 。

同源

如果兩個網頁之間只要存在 協議 || 網域名稱 || 埠 不一致,就會禁止cookie等共享。不過現在的大**會把資源分散到多個伺服器上,這樣可能會出現是非同源的情況,這時候「跨域」出來了。

試圖訪問限制之外的資源,都會引發安全錯誤,除非採用被認可的跨域解決方案,這個解決方案叫做cors ( cross-origin resource sharing , 跨域資源共享)。

cors是w3c的乙個工作草案,定義了在必須訪問跨域資源時,瀏覽器與伺服器應該如何溝通。cors實際是通過http頭部讓瀏覽器與伺服器進行溝通,從而決定請求或響應是否成功。

比如,再傳送請求時,新增origin的頭部資訊:

origin:

伺服器如果認為這個請求可以接受,就會設定access-control-allow-origin:

access-control-allow-origin:

當這個頭部不存在或不匹配,瀏覽器則拒絕請求。另外,請求和響應都不包含cookie資訊.

後面會給出各瀏覽器對cors的實現和其他跨域技術(jsonp, img標籤, comet)。

block介紹(三)揭開神秘面紗(上)

lock到底是什麼 我們使用clang的rewrite objc命令來獲取轉碼後的 1 block的底層實現 我們來看看最簡單的乙個block 圖一這個block僅僅列印棧變數i和j的值,其被clang轉碼為 圖二首先是乙個結構體 main block impl 0 從圖二中的最後一行可以看到,bl...

揭開Socket程式設計的面紗

對tcp ip udp socket程式設計這些詞你不會很陌生吧?隨著網路技術的發展,這些詞充斥著我們的耳朵。那麼我想問 1.什麼是tcp ip udp?2.socket在 呢?3.socket是什麼呢?4.你會使用它們嗎?什麼是tcp ip udp?tcp ip transmission cont...

揭開Socket程式設計的面紗

對tcp ip udp socket程式設計這些詞你不會很陌生吧?隨著網路技術的發展,這些詞充斥著我們的耳朵。那麼我想問 1.什麼是tcp ip udp?2.socket在 呢?3.socket是什麼呢?4.你會使用它們嗎?什麼是tcp ip udp?tcp ip transmission cont...