<option id="mwy0y"><strong id="mwy0y"></strong></option>
  • <ul id="mwy0y"><sup id="mwy0y"></sup></ul>
  • <ul id="mwy0y"></ul>
  • <del id="mwy0y"><dfn id="mwy0y"></dfn></del><ul id="mwy0y"><sup id="mwy0y"></sup></ul>
  • <abbr id="mwy0y"></abbr>

    千鋒教育-做有情懷、有良心、有品質的職業教育機構

    400-811-9990
    手機站
    千鋒教育

    千鋒學習站 | 隨時隨地免費學

    千鋒教育

    掃一掃進入千鋒手機站

    領取全套視頻
    千鋒教育

    關注千鋒學習站小程序
    隨時隨地免費學習課程

    上海
    • 北京
    • 鄭州
    • 武漢
    • 成都
    • 西安
    • 沈陽
    • 廣州
    • 南京
    • 深圳
    • 大連
    • 青島
    • 杭州
    • 重慶
    當前位置:長沙千鋒IT培訓  >  技術干貨  >  前后端分離跨域怎么操作

    前后端分離跨域怎么操作

    來源:千鋒教育
    發布人:xqq
    時間: 2023-08-20 19:43:00

      1.同源策略

      同源策略是瀏覽器的一個安全功能,不同源的客戶端腳本在沒有明確授權的情況下,不能讀寫對方資源,

      即協議不同,域名不同或者端口不同的都是非同源的

      瀏覽器只阻止表單以及 ajax 請求,并不會阻止 src 請求,所以能訪問cnd,圖片等 src 請求

      2.簡單/復雜請求

      簡單請求定義

      只能使用get/post/head請求方式

      HTTP 頭信息不超出以下幾種字段Accept, Accept-Language,Content-Language, Last-Event-ID

      Content-Type只能是text/plain,multipart/form-data,application/x-www-from-urlencoded

      請求中的任意XMLHttpRequestUpload 對象均沒有注冊任何事件監聽器 (未驗證),MLHttpRequestUpload 對象可以使用 XMLHttpRequest.upload 屬性訪問

      注意

      任何一個不滿足上述要求的請求,即會被認為是復雜請求

      3.CORS

      跨域資源共享 (Cross Origin Resource Sharing)

      跨域資源共享標準新增了一組 HTTP 首部字段,允許服務器聲明哪些源站通過瀏覽器有權限訪問哪些資源,另外,規范要求,對那些可能對服務器數據產生副作用的 HTTP 請求方法,(特別是GET以外的 HTTP 請求,或者搭配某些 MIME 類型的POST請求,瀏覽器必須首先使用OPTIONS方法發起一個預檢請求(preflight request),從而獲知服務端是否允許該跨域請求,服務器確認允許之后,才發起實際的 HTTP 請求.在預檢請求的返回中,服務器端也可以通知客戶端,是否需要攜帶身份憑證

      4.如何解決實現CORS

      1.jsonp

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

    class Test(APIView):

    def get(self, request):
    callback = request.query_params.get("callback", "")
    ret = callback + "(" + "'success'" + ")"
    return HttpResponse(ret)

     

    <button>點擊我向JsonP1發送請求</button>
    <script>
    // 測試發送請求失敗 跨域不能得到數據
    $('#btn_one').click(function () {
    $.ajax({
    url: "http://127.0.0.1:8000/jsonp1",
    type: "get",
    success: function (response) {
    console.log(response)
    }
    })
    });

    function handlerResponse(response) {
    alert(response)
    };

    window.onload = function () {
    $("#btn_one").click(function () {
    let script_ele = document.createElement("script");
    script_ele.src = "http://127.0.0.1:8000/jsonp1?callback=handlerResponse";
    document.body.insertBefore(script_ele, document.body.firstChild);
    })
    }


    </script>

     

    <button>點擊我向JsonP1發送請求</button>
    <script>
    // 測試發送請求失敗 跨域不能得到數據
    $('#btn_one').click(function () {
    $.ajax({
    url: "http://127.0.0.1:8000/jsonp1",
    type: "get",
    success: function (response) {
    console.log(response)
    }
    })
    });

    function handlerResponse(response) {
    alert(response)
    };

    window.onload = function () {
    $("#btn_one").click(function () {
    let script_ele = document.createElement("script");
    script_ele.src = "http://127.0.0.1:8000/jsonp1?callback=handlerResponse";
    document.body.insertBefore(script_ele, document.body.firstChild);
    })
    }


    </script>

     

    聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。

    猜你喜歡LIKE

    python內存管理說法錯誤

    2023-08-21

    python內存管理機制有哪些

    2023-08-21

    Python內存管理有不確定性

    2023-08-21

    最新文章NEW

    python內存管理機制

    2023-08-21

    Python內存管理方法有哪些

    2023-08-21

    python關鍵字的含義

    2023-08-21

    相關推薦HOT

    更多>>

    快速通道 更多>>

    最新開班信息 更多>>

    網友熱搜 更多>>