python django框架|Python框架Django解决跨域API调用问题

更新时间:2019-10-04    来源:python    手机版     字体:

【www.bbyears.com--python】


前几天,在做质量度量平台时(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,没有跨域烦恼,真爽!~

本文来源:http://www.bbyears.com/jiaocheng/71060.html