国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

AJAX跨域簡單講解【Python版】

xiaochao / 1704人閱讀

摘要:結(jié)果如圖所示,第二個由于跨域仍然報錯,第三個則正常輸出在中修改也可以通過向瀏覽器返回特定響應(yīng)頭,告訴瀏覽器它是允許被跨域調(diào)用的,使用的添加和兩個字段,更新如下將的方法請求的接口改為,依次點(diǎn)擊,第二個已經(jīng)可以正常輸出內(nèi)容

總結(jié)自慕課網(wǎng):ajax跨域完全講解,并且原視頻中后臺為JAVA,這里改成了Python


什么是AJAX跨域

只要協(xié)議、域名、端口有任何一個不同,都被當(dāng)作是不同的域,不同域之間的請求就是跨域操作。AJAX跨域就是AJAXA域下對B域發(fā)送了請求,一般情況下會被瀏覽器禁止。

例如,后臺開啟兩個Flask服務(wù)器ServerA(port=8080)ServerB(port=8081)
ServerA.py代碼如下:

from flask import Flask, render_template

app = Flask(__name__)


@app.route("/")
def index():
    return render_template("index.html")


@app.route("/get")
def get():
    return "get8080 ok"

if __name__ == "__main__":
    app.run(port=8080)

ServerB.py代碼如下:

from flask import Flask

app = Flask(__name__)


@app.route("/get")
def get():
    return "get8081 ok"

if __name__ == "__main__":
    app.run(port=8081)

index.html使用jQuery發(fā)送ajax請求,代碼如下:




    Index


Test

因此GET 8080GET 8081兩個按鈕是分別向8080/8081端口發(fā)送請求,并將結(jié)果打印在控制臺。開啟兩個服務(wù)器,在瀏覽器輸入127.0.0.1:8080進(jìn)入index頁面,打開Chrome控制臺并依次點(diǎn)擊,結(jié)果如圖:

可以看到GET 8080正常輸出,而由于8081端口的請求屬于跨域,瀏覽器報錯并未正常打印結(jié)果。


如何處理AJAX跨域問題
1.關(guān)閉瀏覽器安全策略

禁止跨域的AJAX請求,是瀏覽器本身的安全策略,實際上后臺并沒有限制,例如點(diǎn)擊GET 8081后,可以在NETWORK中看到這個請求本身是OK的:

因此只要關(guān)閉瀏覽器的安全策略即可,方式之一是在命令行中使用

"chrome.exe路徑" --disable-web-security --user-data-dir=D:	emp

打開瀏覽器,此時瀏覽器會有安全性提示,依次點(diǎn)擊兩個按鈕,結(jié)果如圖:

??

2.使用JSONP

AJAX請求受到跨域的限制,其請求類型是xhr,但html頁面在引用別的域的JS腳本時卻可以正常訪問,這種請求的類型是script,如圖:

JSONP的原理就是將原本的xhr請求替換為script請求,例如假設(shè)原先xhr請求返回的是數(shù)據(jù)AJSONP請求會附帶一個callback參數(shù)說明本地使用的回調(diào)函數(shù),假設(shè)為func1,后端收到這個JSONP請求,返回的是JS代碼func1(A)。使用JSONP需要對前后端都做修改。在此不演示~

??

3.在ServerA中修改

我們可以讓后臺服務(wù)器代替瀏覽器去請求跨域的接口,并將數(shù)據(jù)通過本域的接口返回給瀏覽器,使瀏覽器不再發(fā)送跨域請求。例如在ServerA.py中增加一個接口如下:

@app.route("/get_8081_through_8080")
def get2():
    return requests.get("http://127.0.0.1:8081/get").text

index.html增加一個button,如下:



此時對瀏覽器而言get3()就不屬于跨域的請求了,后臺代替瀏覽器向8081發(fā)送了請求。
結(jié)果如圖所示,第二個button由于跨域仍然報錯,第三個button則正常輸出:

??

4.在ServerB中修改

ServerB也可以通過向瀏覽器返回特定響應(yīng)頭,告訴瀏覽器它是允許被跨域調(diào)用的,使用flaskmake_response添加Access-Control-Allow-OriginAccess-Control-Allow-Methods兩個字段,ServerB.py更新如下:

from flask import Flask, Response
app = Flask(__name__)

@app.route("/get")
def get():
    return "get8081 ok"

@app.route("/get2")
def get2():
    resp = Response("get8081 ok by Access-Control-Allow")
    resp.headers["Access-Control-Allow-Origin"] = "http://127.0.0.1:8080"
    resp.headers["Access-Control-Allow-Methods"] =  "GET"
    return resp


if __name__ == "__main__":
    app.run(port=8081)

index.htmlget2()方法請求的接口改為"http://127.0.0.1:8081/get2",依次點(diǎn)擊button,第二個button已經(jīng)可以正常輸出內(nèi)容:

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/41657.html

相關(guān)文章

  • 前端相關(guān)大雜燴

    摘要:希望幫助更多的前端愛好者學(xué)習(xí)。前端開發(fā)者指南作者科迪林黎,由前端大師傾情贊助。翻譯最佳實踐譯者張捷滬江前端開發(fā)工程師當(dāng)你問起有關(guān)與時,老司機(jī)們首先就會告訴你其實是個沒有網(wǎng)絡(luò)請求功能的庫。 前端基礎(chǔ)面試題(JS部分) 前端基礎(chǔ)面試題(JS部分) 學(xué)習(xí) React.js 比你想象的要簡單 原文地址:Learning React.js is easier than you think 原文作...

    fuyi501 評論0 收藏0
  • AJAX跨域完全講解

    摘要:跨域完全講解今天在慕課網(wǎng)上學(xué)習(xí)了跨域完全講解我在收集面試題的時候其實就已經(jīng)有過跨域的問題的了,當(dāng)時候知道了為什么會存在跨域,以及跨域解決的方案有哪些,今天隨著課程的學(xué)習(xí),又加深了跨域的理解,以此記錄下來。 AJAX跨域完全講解 今天在慕課網(wǎng)上學(xué)習(xí)了AJAX跨域完全講解:https://www.imooc.com/learn/947 我在收集AJAX面試題的時候其實就已經(jīng)有過AJAX跨域...

    alexnevsky 評論0 收藏0
  • AJAX跨域完全講解

    摘要:跨域完全講解今天在慕課網(wǎng)上學(xué)習(xí)了跨域完全講解我在收集面試題的時候其實就已經(jīng)有過跨域的問題的了,當(dāng)時候知道了為什么會存在跨域,以及跨域解決的方案有哪些,今天隨著課程的學(xué)習(xí),又加深了跨域的理解,以此記錄下來。 AJAX跨域完全講解 今天在慕課網(wǎng)上學(xué)習(xí)了AJAX跨域完全講解:https://www.imooc.com/learn/947 我在收集AJAX面試題的時候其實就已經(jīng)有過AJAX跨域...

    i_garfileo 評論0 收藏0
  • 慕課網(wǎng)_《Ajax跨域完全講解》學(xué)習(xí)總結(jié)

    摘要:時間年月日星期三說明本文部分內(nèi)容均來自慕課網(wǎng)。當(dāng)預(yù)檢請求通過的時候,才發(fā)送真正的請求。 時間:2018年04月18日星期三說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):https://www.imooc.com教學(xué)源碼:https://github.com/zccodere/s...學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 課程介...

    fredshare 評論0 收藏0

發(fā)表評論

0條評論

xiaochao

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<