發(fā)送跨域請(qǐng)求返回405錯(cuò)誤問題

1、跨域請(qǐng)求

從本域名訪問不同域名或端口的http請(qǐng)求統(tǒng)一稱為跨域請(qǐng)求主穗,為了安全起見悲关,瀏覽器會(huì)阻止從腳本中(比如js、css)發(fā)起http跨域請(qǐng)求撤逢,但資源以嵌入的方式是可以加載的膛锭。

以下是可能嵌入跨源的資源的一些示例:

  • <script src="..."></script>標(biāo)簽嵌入跨域腳本。語法錯(cuò)誤信息只能在同源腳本中捕捉到蚊荣。
  • <link rel="stylesheet" href="...">標(biāo)簽嵌入CSS初狰。由于CSS的松散的語法規(guī)則,CSS的跨域需要一個(gè)設(shè)置正確的Content-Type消息頭互例。不同瀏覽器有不同的限制:
    IE, Firefox, Chrome, Safari (跳至CVE-2010-0051)部分 和 Opera奢入。
  • <img>嵌入圖片。支持的圖片格式包括PNG,JPEG,GIF,BMP,SVG,...
  • <video> 和 <audio>嵌入多媒體資源
  • <object>媳叨,<embed>和<applet>的插件
  • @font-face
    引入的字體腥光。一些瀏覽器允許跨域字體( cross-origin fonts),一些需要同源字體(same-origin fonts)糊秆。
  • <frame>
    <iframe>載入的任何資源武福。站點(diǎn)可以使用
    X-Frame-Options消息頭來阻止這種形式的跨域交互。

非嵌入式http跨域請(qǐng)求分兩種:

  • 簡(jiǎn)單請(qǐng)求
    簡(jiǎn)單請(qǐng)求需要滿足三個(gè)條件:
    • 請(qǐng)求的methods僅限于GET痘番、HEAD捉片、POST
    • Content-Type頭值必須為text/plain|multipart/form-data|application/x-www-form-urlencoded其中之一
    • 請(qǐng)求頭部不可以添加額外的頭部

此類請(qǐng)求只是簡(jiǎn)單的發(fā)送請(qǐng)求,是否能成功汞舱,需要服務(wù)器端配置Access-Control-Allow-Origin: yourDomain | *

  • 預(yù)檢請(qǐng)求
    與前述簡(jiǎn)單請(qǐng)求不同伍纫,“需預(yù)檢的請(qǐng)求”要求必須首先使用 OPTIONS
    方法發(fā)起一個(gè)預(yù)檢請(qǐng)求到服務(wù)器,以獲知服務(wù)器是否允許該實(shí)際請(qǐng)求兵拢。"預(yù)檢請(qǐng)求“的使用翻斟,可以避免跨域請(qǐng)求對(duì)服務(wù)器的用戶數(shù)據(jù)產(chǎn)生未預(yù)期的影響
    簡(jiǎn)單請(qǐng)求需要滿足三個(gè)條件:
    • 請(qǐng)求的methods為PUT 、DELETE 说铃、CONNECT 、OPTIONS 嘹履、TRACE 腻扇、PATCH中任一種HTTP方法
    • Content-Type頭值不為text/plain|multipart/form-data|application/x-www-form-urlencoded其中之一
    • 請(qǐng)求頭部添加了額外的頭部

所謂預(yù)檢請(qǐng)求,就是在正式請(qǐng)求發(fā)送之前砾嫉,先發(fā)送一個(gè)OPTIONS請(qǐng)求去服務(wù)器詢問服務(wù)器是否處理正式請(qǐng)求的method以及帶的headers幼苛,如果處理,那就發(fā)送正式請(qǐng)求焕刮,否則報(bào)錯(cuò) code 405舶沿。
比如發(fā)送一個(gè)跨域的get請(qǐng)求墙杯,但是添加了一個(gè)headers: {myheader: true}, 這樣滿足了預(yù)檢請(qǐng)求的條件,瀏覽器攔截到該get請(qǐng)求后括荡,檢查到headers中有額外headers高镐,那么就會(huì)自己先發(fā)一個(gè)OPTIONS請(qǐng)求,帶上get請(qǐng)求的method與headers去訪問服務(wù)器畸冲。

2嫉髓、跨域請(qǐng)求需要帶上cookie

當(dāng)發(fā)送跨域請(qǐng)求時(shí),有時(shí)需要帶上cookie或者其他證書去認(rèn)證邑闲,需要在前端請(qǐng)求headers中添加withCredentials:true,這樣才會(huì)帶上cookie算行,并且服務(wù)器端的響應(yīng)中需攜帶 Access-Control-Allow-Credentials: true,否則瀏覽器將不會(huì)把響應(yīng)內(nèi)容返回給請(qǐng)求的發(fā)送者苫耸。

注意州邢,對(duì)于附帶身份憑證的請(qǐng)求,服務(wù)器不得設(shè)置 Access-Control-Allow-Origin 的值為“*”褪子。
這是因?yàn)檎?qǐng)求的首部中攜帶了 Cookie 信息偷霉,如果 Access-Control-Allow-Origin 的值為“*”,請(qǐng)求將會(huì)失敗褐筛。而將 Access-Control-Allow-Origin 的值設(shè)置為http://yourhost.com类少,則請(qǐng)求將成功執(zhí)行。
另外渔扎,響應(yīng)首部中也攜帶了 Set-Cookie 字段硫狞,嘗試對(duì) Cookie 進(jìn)行修改。如果操作失敗晃痴,將會(huì)拋出異常残吩。

參考:
1、瀏覽器的同源策略
2倘核、HTTP訪問控制(CORS)
3泣侮、前后端通訊系統(tǒng)
4、web font 字體跨域

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末紧唱,一起剝皮案震驚了整個(gè)濱河市活尊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌漏益,老刑警劉巖蛹锰,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異绰疤,居然都是意外死亡铜犬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來癣猾,“玉大人敛劝,你說我怎么就攤上這事》子睿” “怎么了夸盟?”我有些...
    開封第一講書人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)呐粘。 經(jīng)常有香客問我满俗,道長(zhǎng),這世上最難降的妖魔是什么作岖? 我笑而不...
    開封第一講書人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任唆垃,我火速辦了婚禮,結(jié)果婚禮上痘儡,老公的妹妹穿的比我還像新娘辕万。我一直安慰自己,他們只是感情好沉删,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開白布渐尿。 她就那樣靜靜地躺著,像睡著了一般矾瑰。 火紅的嫁衣襯著肌膚如雪砖茸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評(píng)論 1 308
  • 那天殴穴,我揣著相機(jī)與錄音凉夯,去河邊找鬼。 笑死采幌,一個(gè)胖子當(dāng)著我的面吹牛劲够,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播休傍,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼征绎,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了磨取?” 一聲冷哼從身側(cè)響起人柿,我...
    開封第一講書人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎寝衫,沒想到半個(gè)月后顷扩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡慰毅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扎阶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汹胃。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡婶芭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出着饥,到底是詐尸還是另有隱情犀农,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布宰掉,位于F島的核電站呵哨,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏轨奄。R本人自食惡果不足惜孟害,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望挪拟。 院中可真熱鬧挨务,春花似錦、人聲如沸玉组。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惯雳。三九已至朝巫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間石景,已是汗流浹背劈猿。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鸵钝,地道東北人糙臼。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像恩商,于是被迫代替她去往敵國(guó)和親变逃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理怠堪,服務(wù)發(fā)現(xiàn)揽乱,斷路器,智...
    卡卡羅2017閱讀 134,693評(píng)論 18 139
  • 前言:對(duì)于跨域請(qǐng)求粟矿,很早之前就有去了解過凰棉,但因?yàn)橐恢标P(guān)注的都是服務(wù)器后端開發(fā),故也就僅僅停留在概念的理解上而沒有機(jī)...
    ken_ljq閱讀 89,778評(píng)論 6 128
  • Section1陌粹、為什么要跨域撒犀? 自古以來(1995年起),為了用戶的信息安全,瀏覽器就引入了同源策略或舞。那么同源策...
    qhaobaba閱讀 385評(píng)論 0 0
  • Section1荆姆、為什么要跨域? 自古以來(1995年起)映凳,為了用戶的信息安全胆筒,瀏覽器就引入了同源策略。那么同源策...
    不去解釋閱讀 555評(píng)論 0 0
  • 優(yōu)雅是女人一生的必修課 二十歲诈豌,穿著新買的裙子去看演唱會(huì)仆救; 三十歲,到樓下倒垃圾也要畫個(gè)淡妝矫渔; 四十歲彤蔽,早上跟閨蜜...
    Queenie_675b閱讀 243評(píng)論 0 0