1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
      使用Django如何解決跨域請(qǐng)求-創(chuàng)新互聯(lián)

      本篇文章為大家展示了使用Django如何解決跨域請(qǐng)求,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

      創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)營(yíng)銷推廣、網(wǎng)站重做改版、左權(quán)網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為左權(quán)等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

      幾種方法:

      • 使用django-cors-headers全局控制

      • 使用JsonP,只能用于Get方法

      • 在views.py里設(shè)置響應(yīng)頭,只能控制單個(gè)接口

      django-cors-headers

      首先安裝

      pip install django-cors-headers

      然后在settings.py里配置一番就可以

      INSTALLED_APPS = [
       ...
       'corsheaders',
       ...
       ] 
      
      MIDDLEWARE_CLASSES = (
       ...
       'corsheaders.middleware.CorsMiddleware',
       'django.middleware.common.CommonMiddleware', # 注意順序
       ...
      )
      #跨域增加忽略
      CORS_ALLOW_CREDENTIALS = True
      CORS_ORIGIN_ALLOW_ALL = True
      CORS_ORIGIN_WHITELIST = (
       '*'
      )
      
      CORS_ALLOW_METHODS = (
       'DELETE',
       'GET',
       'OPTIONS',
       'PATCH',
       'POST',
       'PUT',
       'VIEW',
      )
      
      CORS_ALLOW_HEADERS = (
       'XMLHttpRequest',
       'X_FILENAME',
       'accept-encoding',
       'authorization',
       'content-type',
       'dnt',
       'origin',
       'user-agent',
       'x-csrftoken',
       'x-requested-with',
       'Pragma',
      )

      大功告成了。

      JsonP

      使用Ajax獲取json數(shù)據(jù)時(shí),存在跨域的限制。不過(guò),在Web頁(yè)面上調(diào)用js的script腳本文件時(shí)卻不受跨域的影響,JSONP就是利用這個(gè)來(lái)實(shí)現(xiàn)跨域的傳輸。因此,我們需要將Ajax調(diào)用中的dataType從JSON改為JSONP(相應(yīng)的API也需要支持JSONP)格式。

      JSONP只能用于GET請(qǐng)求。

      什么是JSONP

      首先提一下JSON這個(gè)概念,JSON是一種輕量級(jí)的數(shù)據(jù)傳輸格式,被廣泛應(yīng)用于當(dāng)前Web應(yīng)用中。JSON格式數(shù)據(jù)的編碼和解析基本在所有主流語(yǔ)言中都被實(shí)現(xiàn),所以現(xiàn)在大部分前后端分離的架構(gòu)都以JSON格式進(jìn)行數(shù)據(jù)的傳輸。

      那么JSONP是什么呢?

      首先拋出瀏覽器同源策略這個(gè)概念,為了保證用戶訪問(wèn)的安全,現(xiàn)代瀏覽器使用了同源策略,即不允許訪問(wèn)非同源的頁(yè)面,詳細(xì)的概念大家可以自行百度。這里大家只要知道,在ajax中,不允許請(qǐng)求非同源的URL就可以了,比如www.a.com下的一個(gè)頁(yè)面,其中的ajax請(qǐng)求是不允許訪問(wèn)www.b.com/c.php這樣一個(gè)頁(yè)面的。

      JSONP就是用來(lái)解決跨域請(qǐng)求問(wèn)題的,那么具體是怎么實(shí)現(xiàn)的呢?

      JSONP原理

      ajax請(qǐng)求受同源策略影響,不允許進(jìn)行跨域請(qǐng)求,而script標(biāo)簽src屬性中的鏈接卻可以訪問(wèn)跨域的js腳本,利用這個(gè)特性,服務(wù)端不再返回JSON格式的數(shù)據(jù),而是返回一段調(diào)用某個(gè)函數(shù)的js代碼,在src中進(jìn)行了調(diào)用,這樣實(shí)現(xiàn)了跨域。

      JSONP具體實(shí)現(xiàn)

      127.0.0.1:8000中的index.html

      
      
      
      GoJSONP
      
      
      $(".jsonp_test").click(function () {
      $.ajax({
      url:"http://127.0.0.1:8008/service/",
      type:"get",
      dataType:"jsonp", // 偽造ajax 基于script
      jsonp: 'callbacks',
      //jsonpCallback:"alex",
      success:function (data) {
      console.log(data)
      }
      })
      })
      測(cè)試
       

      127.0.0.1:8080的views

      import json
      def jsonp_test(request):
      func=request.GET.get("callbacks") #獲取請(qǐng)求的callbacks參數(shù)
      info={"name":"fuyong","age":18} #定義數(shù)據(jù)
      return HttpResponse(" ('%s')"%(func,json.dumps(info))) #傳json對(duì)象

      Views.py配置響應(yīng)頭

      修改views.py中對(duì)應(yīng)API的實(shí)現(xiàn)函數(shù),允許其他域通過(guò)Ajax請(qǐng)求數(shù)據(jù):

      def myview(request): 
       response = HttpResponse(json.dumps({“key”: “value”, “key2”: “value”})) 
       response[“Access-Control-Allow-Origin”] = “*” 
       response[“Access-Control-Allow-Methods”] = “POST, GET, OPTIONS” 
       response[“Access-Control-Max-Age”] = “1000” 
       response[“Access-Control-Allow-Headers”] = “*” 
       return response

      上述內(nèi)容就是使用Django如何解決跨域請(qǐng)求,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


      分享名稱:使用Django如何解決跨域請(qǐng)求-創(chuàng)新互聯(lián)
      標(biāo)題路徑:http://www.ef60e0e.cn/article/dosiee.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        银川市| 闵行区| 沂南县| 根河市| 扎赉特旗| 麟游县| 万山特区| 米泉市| 广汉市| 铜川市| 葫芦岛市| 聊城市| 连江县| 台州市| 桃园县| 大荔县| 宜兰县| 剑川县| 高台县| 建宁县| 郎溪县| 景谷| 大姚县| 门源| 长寿区| 东山县| 准格尔旗| 南投市| 井冈山市| 北辰区| 岗巴县| 昌邑市| 措美县| 尼木县| 色达县| 津市市| 邳州市| 潍坊市| 贵溪市| 张掖市| 洞口县|