Python架構Django解決跨域API調用問題

來源:互聯網
上載者:User


前幾天,在做品質度量平台時(Python架構Django開發),跨域調用的問題,我前面有一個做法是,在本地server中增加一個API,這個API的功能是遠程請求一個API並解析資料,這樣瀏覽器訪問本系統時只需要調用同網域名稱下新增加的這個API即可,不存在跨域問題。不過,這次我想直接在AngularJS中調用跨域的遠程API。

解決跨域問題,有兩個方法:1.使用jsonp 2.使CORS生效

使用jsonp方法,需要讓伺服器端放回jsonp格式的response,如Django可以加jsonp相關的decorator,如:https://coderwall.com/p/k8vb_a/returning-json-jsonp-from-a-django-view-with-a-little-decorator-help
由於我不太喜歡這種方式,所以這裡略過了,可看後面的參考資料。

使用CORS:這個用起來比較方便,現在大多數瀏覽器都支援了,且我web伺服器完全開放給別人調用,所以比較推薦CORS。
首先,CORS是什嗎?
Cross-Origin Resource Sharing (CORS) is a specification that enables truly open access across domain-boundaries. If you serve public content, please consider using CORS to open it up for universal JavaScript/browser access.
其實,在伺服器的response header中,加入“Access-Control-Allow-Origin: *”即可支援CORS,非常的簡單,apache/nginx等怎麼配置,見參考文檔。

在Django中,也有人開發了CORS-header的middleware,只在settings.py中做一些簡單的配置即可,見:https://github.com/ottoyiu/django-cors-headers/
現在用起來伺服器端完全開放,開啟CORS,沒有跨域煩惱,真爽!~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.