前端之a(chǎn)jax筆記(三)

本文由何小蒙原創(chuàng),如需轉(zhuǎn)載要注明來源驱富。

個人筆記墩新,自用辅甥,僅供參考庐船。

跨域

跨域是前端接口請求中比較重要的點,單獨開一篇記錄下茵臭。

同源策略

同源策略是一個重要的安全策略沽瘦,它用于限制一個origin的文檔或它加載的腳本如何能與另一個源的資源進行交互啦租。能夠減少惡意文檔煮岁,減少可能被攻擊媒介讥蔽。 如果兩個URL的協(xié)議涣易、域名、端口號都相同冶伞,就稱這兩個URL同源新症。

瀏覽器默認兩個不同的源之間是可以互相訪問資源和操作DOM的。兩個不同的源之間若是想要訪問資源或者操作DOM响禽,那么會有一套基礎(chǔ)的安全策略的制約徒爹,我們把這稱為同源策略。它的存在可以保護用戶隱私信息芋类,防止身份偽造瀑焦。

CORS

CORS的意思是跨資源共享,用自定義的HTTP頭部讓瀏覽器和服務(wù)器商量是否能溝通梗肝,不行瀏覽器(?此處確實是瀏覽器铺董,為什么不是服務(wù)器)會駁回請求巫击。跨域請求默認情況下不會攜帶cookie精续。
意思是不行這個請求就是直接沒發(fā)到服務(wù)器嗎坝锰?

// request headers
Origin: https://www.baidu.com

Origin是請求端告訴服務(wù)端請求來源,如上例重付,這個是來自百度的請求

// response headers
Access-Control-Allow-Origin: https://www.baidu.com

Access-Control-Allow-Origin 如果服務(wù)端覺得這個來源的請求可以接受顷级,就會返回與Origin相同的來源,如上例确垫。如果是公共資源可以返回 *


更新
1.確實是瀏覽器駁回跨域請求弓颈,服務(wù)器不會做處理
2.跨域請求可能會發(fā)送到服務(wù)器,也可能不會發(fā)送到服務(wù)器:
簡單請求(會到服務(wù)器删掀,服務(wù)器返回到瀏覽器后翔冀,瀏覽器隱藏返回值)
復(fù)雜請求(復(fù)雜請求會發(fā)預(yù)檢,預(yù)檢不通過就不會到服務(wù)器


Preflighted Request

預(yù)檢請求披泪,Preflighted Request是一種驗證機制:用于驗證開發(fā)人員使用自定義頭部纤子、GET或POST之外的方法,以及不同類型的主體內(nèi)容款票。
發(fā)送預(yù)檢請求控硼,使用的是OPTION方法。

整個過程就是
請求端:我這有個麻煩的請求艾少,先用OPTION方法問下你能不能請求翱ㄇ?
服務(wù)器老弟:行姆钉,咱返回這些值告訴你说订。
a.不允許請求
請求端:喲抄瓦,不允許請求,請求結(jié)果緩存下陶冷,Access-Control-Max-Age時間內(nèi)不用重新問了钙姊。
b.允許請求
請求端:直接發(fā)送到服務(wù)端

請求端先發(fā)送這個,用OPTION方法

Origin: https://www.baidu.com
Access-Control-Request-Methods: POST 
Access-Control-Request-Headers: HeXM

Access-Control-Request-Methods是請求使用的方法
Access-Control-Request-Headers是自定義的頭部信息
服務(wù)端返回

Access-Control-Allow-Orgin: https://www.baidu.com
Access-Control-Allow-Methods: POST, GET
Access-Control-Allow-Headers: HXM
Access-Control-Max-Age: 1000000

Access-Control-Allow-Methods服務(wù)器允許請求的方法
Access-Control-Allow-Headers服務(wù)器允許請求的頭部
Access-Control-Max-Age應(yīng)該將此預(yù)檢請求緩存多少秒

OPTION.png

cookie

上文說cookie是跨域請求默認不會攜帶的埂伦,其實除了cookie煞额,HTTP認證,SSL證明也是默認不會帶上的沾谜。但是總有些情況需要攜帶膊毁,那咋辦呢?

通過如下設(shè)置基跑,我們就可以攜帶上述這些東西了
在請求端:

xhr.withCredentials = true

服務(wù)端HTTP頭部設(shè)置:

Access-Control-Allow-Origin: 此處不能設(shè)置為*婚温,必須要和請求同源
Access-Control-Allow-Credentials: true

如果服務(wù)端不設(shè)置Access-Control-Allow-Credentials,那么瀏覽器的返回值就是空媳否,status為0栅螟,走error()的處理方法。
預(yù)檢也可以發(fā)這個頭部篱竭,告訴服務(wù)器咱們可以帶cookie力图。
IE10以上的版本不支持withCredentials屬性。


JSONP

老實說掺逼,我覺得JSONP使用場景比較受限吃媒,因為它只接受GET請求,但實際業(yè)務(wù)場景只用GET請求的很少吕喘,基本至少都要用到POST吧赘那。而且如果跨的域名不安全,返回過來的信息可能也不安全氯质。不過既然有這個技術(shù)漓概,咱也簡單了解下。

JSONP不是語法病梢,是json的一種使用方法胃珍。

callback({"name": "HeXM"})

請求時指定回調(diào)函數(shù)的命名,如下例:
https://www.test.com/json?callback=handle
handle即為回調(diào)函數(shù)命名
然后數(shù)據(jù)會傳到這個回調(diào)函數(shù)蜓陌,接著前端在<script>里面處理即可觅彰。


本文參考:
同源策略(same origin policy)
跨域的請求在服務(wù)端會不會真正執(zhí)行?
ajax請求攜帶cookie和自定義請求頭header(跨域和同域)
http跨域時的options請求
MDN-Access-Control-Request-Headers

其他相關(guān)系列:
前端之a(chǎn)jax筆記(一)
前端之a(chǎn)jax筆記(二)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钮热,一起剝皮案震驚了整個濱河市填抬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌隧期,老刑警劉巖飒责,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赘娄,死亡現(xiàn)場離奇詭異,居然都是意外死亡宏蛉,警方通過查閱死者的電腦和手機遣臼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拾并,“玉大人揍堰,你說我怎么就攤上這事⌒嵋澹” “怎么了屏歹?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長之碗。 經(jīng)常有香客問我蝙眶,道長,這世上最難降的妖魔是什么褪那? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任械馆,我火速辦了婚禮,結(jié)果婚禮上武通,老公的妹妹穿的比我還像新娘。我一直安慰自己珊搀,他們只是感情好冶忱,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著境析,像睡著了一般囚枪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上劳淆,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天链沼,我揣著相機與錄音,去河邊找鬼沛鸵。 笑死括勺,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的曲掰。 我是一名探鬼主播疾捍,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼栏妖!你這毒婦竟也來了乱豆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤吊趾,失蹤者是張志新(化名)和其女友劉穎宛裕,沒想到半個月后瑟啃,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡揩尸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年蛹屿,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疲酌。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡蜡峰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出朗恳,到底是詐尸還是另有隱情湿颅,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布粥诫,位于F島的核電站油航,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏怀浆。R本人自食惡果不足惜谊囚,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望执赡。 院中可真熱鬧镰踏,春花似錦、人聲如沸沙合。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽首懈。三九已至绊率,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間究履,已是汗流浹背滤否。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留最仑,地道東北人藐俺。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像泥彤,于是被迫代替她去往敵國和親紊搪。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容