第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

ajax跨域完全講解

曉風(fēng)輕 全棧工程師
難度中級(jí)
時(shí)長(zhǎng) 1小時(shí)40分
學(xué)習(xí)人數(shù)
綜合評(píng)分9.67
119人評(píng)價(jià) 查看評(píng)價(jià)
9.7 內(nèi)容實(shí)用
9.6 簡(jiǎn)潔易懂
9.7 邏輯清晰
  • 跨域解決方案:

    1. 被調(diào)用方解決:在響應(yīng)頭增加指定字段,告訴瀏覽器允許調(diào)用。這種解決方案的請(qǐng)求是直接從瀏覽器發(fā)送的

    2. 調(diào)用發(fā)解決:這是隱藏跨域的解決法案。這種跨域請(qǐng)求不是直接從瀏覽器發(fā)送的,而是從中間的http服務(wù)器轉(zhuǎn)發(fā)過(guò)去的


    查看全部
    0 采集 收起 來(lái)源:跨越解決方向

    2019-09-01

  • 從服務(wù)端解決跨域問(wèn)題:

    (1)被調(diào)用方解決跨域問(wèn)題,被調(diào)用方修改代碼解決。

    (2)調(diào)用方解決跨域,調(diào)用方修改Apache或者Nginx靜態(tài)服務(wù)器,通過(guò)靜態(tài)服務(wù)器隱藏調(diào)用請(qǐng)求返回給前臺(tái),前臺(tái)以為是同一個(gè)地址和端口的請(qǐng)求就解決了跨域問(wèn)題。


    一個(gè)請(qǐng)求是怎么被處理的:當(dāng)一個(gè)請(qǐng)求從瀏覽器發(fā)出的時(shí)候,他會(huì)先到中間的http服務(wù)器或者叫靜態(tài)服務(wù)器主要是由(apache/nginx)來(lái)處理的。中間的靜態(tài)服務(wù)器收到請(qǐng)求后會(huì)判斷是靜態(tài)請(qǐng)求還是動(dòng)態(tài)請(qǐng)求,和用戶數(shù)據(jù)有關(guān)的就是動(dòng)態(tài)請(qǐng)求,如圖片,css,js就是靜態(tài)請(qǐng)求,中間的靜態(tài)服務(wù)器發(fā)現(xiàn)是靜態(tài)請(qǐng)求時(shí)就會(huì)把請(qǐng)求直接處理,然后直接返回到客戶端,如果是動(dòng)態(tài)請(qǐng)求,請(qǐng)求從客戶端發(fā)起到了中間的http服務(wù)器,中間的http服務(wù)器會(huì)把請(qǐng)求轉(zhuǎn)發(fā)到后臺(tái)的應(yīng)用服務(wù)器處理完后再返回給中間的http服務(wù)器,http服務(wù)器再把請(qǐng)求轉(zhuǎn)發(fā)到客戶請(qǐng)求。

    查看全部
  • JSONP是一個(gè)非官方協(xié)議,它是一個(gè)約定,約定了一個(gè)請(qǐng)求的參數(shù)里如果包含指定的參數(shù)(默認(rèn)是callback)這就是一個(gè)JSONP請(qǐng)求,服務(wù)發(fā)現(xiàn)是一個(gè)JSONP請(qǐng)求時(shí)就會(huì)把返回的值由原來(lái)的JSON對(duì)象改變JS代碼,JS的代碼的內(nèi)容是函數(shù)調(diào)用的形式。他的函數(shù)名是callback參數(shù)的值,它的函數(shù)的參數(shù)是原來(lái)?要返回的JSON對(duì)象。


    JSONP的弊端:

    1. 服務(wù)器需要改動(dòng)代碼支持-如果調(diào)用的接口不是我們自己的,那么改動(dòng)就很麻煩

    2. 只支持GET方法,JSONP是通過(guò)動(dòng)態(tài)創(chuàng)建一個(gè)script發(fā)送請(qǐng)求的,而script只支持GET方法

    3. 發(fā)送的不是XHR請(qǐng)求,XHR有許多新的特性,如異步、各種事件等,JSONP則沒(méi)有


    查看全部
    0 采集 收起 來(lái)源:json解決跨域

    2019-09-01

  • JSONP實(shí)現(xiàn)原理。

    https://img1.sycdn.imooc.com//5d6bb2110001072706850361.jpg

    如圖:在發(fā)送ajax請(qǐng)求的時(shí)候,

    設(shè)置dataType為jsonp,即告訴后臺(tái)我需要返回的是script代碼,而不是一個(gè)json格式的數(shù)據(jù)。

    jsonp設(shè)置為callback2,這個(gè)就是前后臺(tái)的協(xié)議,即后臺(tái)返回的script的方法的名稱,然后后臺(tái)將原本的json放在該方法的參數(shù)中返回給前端

    在發(fā)送jsonp請(qǐng)求的時(shí)候,會(huì)帶一個(gè)_線的參數(shù),這是請(qǐng)求的唯一標(biāo)識(shí),那瀏覽器就不會(huì)緩存該請(qǐng)求,設(shè)置cache:true就可以告訴瀏覽器該請(qǐng)求是可以被緩存的。

    請(qǐng)求的參數(shù)如下

    https://img1.sycdn.imooc.com//5d6bb22d0001d3cd13540183.jpg


    查看全部
    0 采集 收起 來(lái)源:json解決跨域

    2019-09-01

  • JSONP的原理:


    jsonp是一種非正式傳輸協(xié)議,是前后臺(tái)約定的協(xié)議,而不是官方協(xié)議。


    jsonp的實(shí)現(xiàn)原理是:前后臺(tái)約定帶有“callback”這個(gè)參數(shù)的請(qǐng)求就是jsonp請(qǐng)求,前臺(tái)發(fā)出去的請(qǐng)求加了“callback”參數(shù),當(dāng)后臺(tái)發(fā)現(xiàn)請(qǐng)求中帶“callback”時(shí),后臺(tái)就知道這是一個(gè)jsonp請(qǐng)求,就會(huì)把返回的數(shù)據(jù)由json變成JS代碼返回,JS代碼內(nèi)容就是一個(gè)函數(shù)的調(diào)用,函數(shù)名是“callback”參數(shù)的值,而原來(lái)需要返回的json對(duì)象數(shù)據(jù)在這里作為參數(shù)傳遞返回。

    前端代碼:

    ....

    $.ajax({

    ? url:....,

    ? dataType:"jsonp",//主要就是dataType是jsonp類型

    ? ......

    });

    setTimeout(function){

    ? expect(result).toEqual({

    ? ? ? "data":"get1 ok"

    ? });

    ..........

    ........

    }

    后臺(tái)代碼:

    例如java語(yǔ)言,需繼承AbstractJsonpResponseBodyAdvice類,重寫構(gòu)造函數(shù)并傳參數(shù)“callback”,super("callback");


    jsonp里傳輸?shù)木褪莏son的數(shù)據(jù)格式,只是在發(fā)送請(qǐng)求時(shí)多加一個(gè)參數(shù),其值為回調(diào)函數(shù)。后臺(tái)程序在獲得該回調(diào)函數(shù)后,把準(zhǔn)備好的json數(shù)據(jù)返回。





    查看全部
    0 采集 收起 來(lái)源:json解決跨域2

    2019-09-01

  • jsonp解決跨域問(wèn)題的原理(區(qū)別):

    ①普通請(qǐng)求,發(fā)送請(qǐng)求時(shí),請(qǐng)求類型type默認(rèn)為 xhr? ;jsonp的請(qǐng)求類型為 script ,不會(huì)被瀏覽器認(rèn)為是跨域異常;

    ②普通請(qǐng)求返回的數(shù)據(jù)類型默認(rèn)為 json 格式;而 jsonp 的請(qǐng)求返回的數(shù)據(jù)類型為 javascript 的腳本;

    ③普通請(qǐng)求的地址后面沒(méi)有攜帶任何數(shù)據(jù);而jsonp請(qǐng)求的地址后面攜帶了 callback為鍵的一組鍵值對(duì)數(shù)據(jù);由下列圖片可知,

    當(dāng)前端被設(shè)置為jsonp格式后,在后端中使用切面實(shí)現(xiàn) jsonp 的格式化接口;該接口聲明當(dāng)返回的數(shù)據(jù)有callback這個(gè)值時(shí),將返回的數(shù)據(jù)以jsonp的格式返回給前端,避免出現(xiàn)數(shù)據(jù)類型不一致的問(wèn)題。


    查看全部
    1 采集 收起 來(lái)源:json解決跨域2

    2019-09-01

  • Jsonp(JSON with Padding) 是 json 的一種"使用模式",可以讓網(wǎng)頁(yè)從別的域名(網(wǎng)站)那獲取資料,即跨域讀取數(shù)據(jù)。

    為什么我們從不同的域(網(wǎng)站)訪問(wèn)數(shù)據(jù)需要一個(gè)特殊的技術(shù)(JSONP )呢?這是因?yàn)橥床呗浴?/p>


    使用JSONP解決跨域問(wèn)題,只改前端不改后端報(bào)語(yǔ)法錯(cuò)誤(如圖中第二條錯(cuò)誤)的原因:JSONP是使用動(dòng)態(tài)創(chuàng)建的一個(gè)script標(biāo)簽,而script標(biāo)簽返回的是JS代碼,但是服務(wù)器后臺(tái)代碼沒(méi)有做任何改動(dòng),返回的還是json對(duì)象。瀏覽器會(huì)把json對(duì)象和字符串當(dāng)作是JS代碼來(lái)解析所以就會(huì)報(bào)錯(cuò)了。解決方法:需要修改后臺(tái)代碼,新建一個(gè)類在構(gòu)造方法里寫super("callback");


    查看全部
    0 采集 收起 來(lái)源:json解決跨域1

    2019-09-01

  • 修改瀏覽器的設(shè)置后,沒(méi)有再出現(xiàn)跨域問(wèn)題

    由此可以認(rèn)為,跨域問(wèn)題主要還是在瀏覽器發(fā)生的校驗(yàn)失敗等問(wèn)題導(dǎo)致的,與后臺(tái)沒(méi)有任何關(guān)系


    查看全部
    0 采集 收起 來(lái)源:瀏覽器禁止檢查

    2019-09-01

  • 在瀏覽器的安裝目錄啟動(dòng)終端,輸入禁止瀏覽器做跨域檢查的校驗(yàn)參數(shù),新啟一個(gè)瀏覽器。命令參數(shù):chrome --disable-web-security --user-data-dir=g:\temp3

    查看全部
    0 采集 收起 來(lái)源:瀏覽器禁止檢查

    2019-09-01

  • 解決思路:

    1.??? 讓瀏覽器不做限制,指定參數(shù),讓瀏覽器不做校驗(yàn),但該方法不太合理,它需要每個(gè)人都去做改動(dòng)。

    2.??? 不要發(fā)出XHR請(qǐng)求,這樣就算是跨域,瀏覽器也不會(huì)報(bào)錯(cuò),解決方案是JSONP,通過(guò)動(dòng)態(tài)創(chuàng)建一個(gè)script,通過(guò)script發(fā)出請(qǐng)求

    3.??? 在跨域的角度:一種是被調(diào)用方修改代碼,加上字段,告訴瀏覽器,支持跨域,支持調(diào)用方調(diào)用。第二種是調(diào)用方使用代理,在a域名里面的的請(qǐng)求地址使用代理指定到b域名。第一種是支持跨域,第二種是隱藏跨域


    查看全部
    0 采集 收起 來(lái)源:解決思路

    2019-09-01

  • 跨域安全問(wèn)題:

    瀏覽器限制:瀏覽器對(duì)請(qǐng)求進(jìn)行校驗(yàn),校驗(yàn)不通過(guò)則報(bào)跨域安全問(wèn)題;(此處,前端向后臺(tái)的請(qǐng)求處理是成功的,后臺(tái)正常打印數(shù)據(jù),前端 console 也正常打印數(shù)據(jù),但瀏覽器在處理時(shí)拒絕了展示)

    跨域:在交互過(guò)程中,前臺(tái)向后端發(fā)起請(qǐng)求,前臺(tái)的ip、端口與后臺(tái)的ip、端口存在任何一個(gè)不同的情況都會(huì)被認(rèn)為是跨域;

    XHR(XMLHttpRequest)請(qǐng)求:發(fā)送的請(qǐng)求類型不同,發(fā)出的請(qǐng)求Type 為 json 時(shí)不會(huì)有跨域的問(wèn)題,而一般情況下,大都是 Type 為 xhr 的請(qǐng)求,所以存在跨域請(qǐng)求的問(wèn)題


    發(fā)生跨域問(wèn)題的原因:

    1. 瀏覽器的限制,出于安全考慮。前臺(tái)可以正常訪問(wèn)后臺(tái),瀏覽器多管閑事報(bào)跨域問(wèn)題,但其實(shí)前臺(tái)已經(jīng)訪問(wèn)到后臺(tái)了。

    2. 跨域,協(xié)議、域名、端口任何一個(gè)不一樣瀏覽器就認(rèn)為是跨域。

    3. XHR(XMLHttpRequest)請(qǐng)求,因?yàn)閍jax是XHR請(qǐng)求,瀏覽器就會(huì)捕捉跨域問(wèn)題。


    查看全部
  • 為什么會(huì)發(fā)生跨域問(wèn)題?

    ????1、瀏覽器限制;?

    ????2、跨域(域名,端口不一樣都是跨域);

    ????3、XHR(XMLHttpRequest請(qǐng)求);同時(shí)滿足以上三個(gè)條件就會(huì)產(chǎn)生跨域。

    ????????????????????????????????https://img1.sycdn.imooc.com//5bbca43f0001adc706530413.jpg

    解決跨域的方法

    ????1,從瀏覽器出發(fā),允許瀏覽器跨域。

    ????????思路:通過(guò)命令行修改瀏覽器啟動(dòng)參數(shù),使得瀏覽器不進(jìn)行跨域檢查,從而允許跨域

    ????????方法:命令行參數(shù)啟動(dòng)瀏覽器后添加參數(shù)--disable-web-security

    ????????例:chrome --disable-web-security

    ????????--disabl-web-security參數(shù)的作用是禁止瀏覽器進(jìn)行跨域檢查

    ????????但是,這種方法有三個(gè)缺點(diǎn):

    ????????????1.每次啟動(dòng)瀏覽器都需要通過(guò)命令行啟動(dòng),太過(guò)繁瑣

    ????????????2.該方法會(huì)導(dǎo)致安全性方面的問(wèn)題

    ????????????3.該方法是客戶端方面的改動(dòng),在實(shí)際使用中,在每個(gè)客戶端上都禁止瀏覽器進(jìn)行跨域檢查不太現(xiàn)實(shí),所以實(shí)用性較低。

    ????總的來(lái)說(shuō),該方法雖然可以解決跨域問(wèn)題,但是價(jià)值不大。在實(shí)際項(xiàng)目中,主要對(duì)服務(wù)器端進(jìn)行改動(dòng)使得支持跨域。

    ????

    ????2,從XHR(XMLHttpRequest)出發(fā)

    ??? (1)避免發(fā)生跨域。使用jsonp,由于jsonp請(qǐng)求是通過(guò)script的方式發(fā)送的(只有xhr的請(qǐng)求方式才有可能產(chǎn)生跨域問(wèn)題),所以不會(huì)產(chǎn)生跨域問(wèn)題。Spring MVC實(shí)現(xiàn)過(guò)程:前臺(tái)使用ajax的get請(qǐng)求,將dataType設(shè)為“jsonp”;服務(wù)器創(chuàng)建一個(gè)類并繼承抽象類AbstractJsonReponseBodyAdvice,最后注解@ControllerAdivece。使用jsonp的弊端,只能使用get方式請(qǐng)求,服務(wù)器需要改動(dòng)代碼,發(fā)送的不是xhr請(qǐng)求。

    ????????????????????https://img1.sycdn.imooc.com//5bbca6b10001e5aa05540233.jpg

    (2)產(chǎn)生跨域后解決。

    ????????????從被調(diào)用方考慮,有三種情況,分別是服務(wù)器實(shí)現(xiàn),nginx配置和apache配置。

    ????????? ? 服務(wù)器實(shí)現(xiàn)需要注意兩種情況,簡(jiǎn)單請(qǐng)求和非簡(jiǎn)單請(qǐng)求。簡(jiǎn)單請(qǐng)求是先執(zhí)行請(qǐng)求再驗(yàn)證,非簡(jiǎn)單請(qǐng)求是先驗(yàn)證再請(qǐng)求。

    ????????? 簡(jiǎn)單請(qǐng)求(比較常見(jiàn)):方法為get,head,post,請(qǐng)求header里面沒(méi)有自定義頭,Content-Type的值為以下幾種 text/plain,multipart/form-data,application/x-www-form-urlencoded。

    ??????????? 非簡(jiǎn)單請(qǐng)求(比較常見(jiàn)):put,delect方法的ajax請(qǐng)求,發(fā)送json格式的ajax請(qǐng)求,帶自定義頭的ajax請(qǐng)求。

    ????????????簡(jiǎn)單請(qǐng)求處理方案:在響應(yīng)頭中添加

    ????????????????Access-Control-Allow-Origin=“允許跨域的url”,即跨省域時(shí),請(qǐng)求頭Origin的值,所以一般是獲取Origin的值。

    ??????????????? Access-Control-Allow-Method=“*”,允許的方法。

    ????????????非簡(jiǎn)單請(qǐng)求處理方案:在相應(yīng)頭中添加

    ??????????????? Access-Control-Allow-Origin=“允許跨域的url”,即跨域時(shí),可以獲取請(qǐng)求頭Origin的值。

    ??????????????? Access-Control-Allow-Method=“*”,允許的方法

    ??????????????? Access-Control-Request-Headers=“Content-Type,自定義的header的key”。

    ???????????? 帶cookies的跨域解決:在響應(yīng)頭添加

    ????????????????Access-Control-Allow-Credentials,="true",允許使用cookies

    ?????ngnix配置:

    ????????????????????https://img1.sycdn.imooc.com//5bbca2b3000190d810350469.jpg


    查看全部
  • jasmine 是一個(gè)行為驅(qū)動(dòng)開(kāi)發(fā)(TDD)測(cè)試框架, 一個(gè)js測(cè)試框架,它不依賴于瀏覽器、dom或其他js框架;jasmine有十分簡(jiǎn)介的語(yǔ)法。

    下載:https://github.com/jasmine/jasmine/releases

    官方參考API:https://www.cnblogs.com/stephenykk/p/4539200.html


    查看全部
  • 使用自動(dòng)聲明獲取自定義請(qǐng)求頭的參數(shù)的方式,再將參數(shù)添加到過(guò)濾器中 req.getHeader(“自定義請(qǐng)求頭”);<br/>
    查看全部
    0 采集 收起 來(lái)源:帶自定義頭的跨域

    2020-09-11

  • 在過(guò)濾器中聲明自定義的請(qǐng)求頭,以解決自定義請(qǐng)求跨域的問(wèn)題

    請(qǐng)求頭參數(shù):"Content-Type,x-header1,x-header2"

    查看全部
    0 采集 收起 來(lái)源:帶自定義頭的跨域

    2019-08-13

舉報(bào)

0/150
提交
取消
課程須知
需要具備基本的前后臺(tái)開(kāi)發(fā)技術(shù)
老師告訴你能學(xué)到什么?
AJAX跨域產(chǎn)生的原因和解決思路 系統(tǒng)的基本部署架構(gòu)和跨域的關(guān)系 http服務(wù)器nginx和apache的重要作用和跨域的2種解決思路 jsonp的工作機(jī)制和優(yōu)缺點(diǎn) 前臺(tái)測(cè)試框架Jasmine的使用

微信掃碼,參與3人拼團(tuán)

微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

友情提示:

您好,此課程屬于遷移課程,您已購(gòu)買該課程,無(wú)需重復(fù)購(gòu)買,感謝您對(duì)慕課網(wǎng)的支持!