django解决跨域请求的问题


Posted in Python onNovember 11, 2018

解决方案

1.安装django-cors-headers

pip install django-cors-headers

2.配置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',
)

OK!问题解决!

其他解决方案

另外还从网上看到其他两种解决方案,但都不太合适。在此列出,供大家参考

1.使用JSONP

使用Ajax获取json数据时,存在跨域的限制。不过,在Web页面上调用js的script脚本文件时却不受跨域的影响,JSONP就是利用这个来实现跨域的传输。因此,我们需要将Ajax调用中的dataType从JSON改为JSONP(相应的API也需要支持JSONP)格式。

JSONP只能用于GET请求。

2.直接修改Django中的views.py文件

修改views.py中对应API的实现函数,允许其他域通过Ajax请求数据:

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python的常见命令注入威胁
Feb 18 Python
用Eclipse写python程序
Feb 10 Python
Windows下安装Scrapy
Oct 17 Python
Python补齐字符串长度的实例
Nov 15 Python
python利用requests库模拟post请求时json的使用教程
Dec 07 Python
解决python线程卡死的问题
Feb 18 Python
钉钉群自定义机器人消息Python封装的实例
Feb 20 Python
python切片的步进、添加、连接简单操作示例
Jul 11 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
Apr 23 Python
iPython pylab模式启动方式
Apr 24 Python
Python自定义聚合函数merge与transform区别详解
May 26 Python
如何利用python正则表达式匹配版本信息
Dec 09 Python
python 生成图形验证码的方法示例
Nov 11 #Python
老生常谈python中的重载
Nov 11 #Python
Django跨域请求CSRF的方法示例
Nov 11 #Python
Python rstrip()方法实例详解
Nov 11 #Python
python requests爬取高德地图数据的实例
Nov 10 #Python
Python爬取商家联系电话以及各种数据的方法
Nov 10 #Python
Python中的取模运算方法
Nov 10 #Python
You might like
Memcached常用命令以及使用说明详解
2013/06/27 PHP
Zend Guard使用指南及问题处理
2015/01/07 PHP
PHP 7的一些引人注目的新特性简单介绍
2015/11/08 PHP
PHP执行普通shell命令流程解析
2020/08/24 PHP
cookie丢失问题(认证失效) Authentication (用户验证信息)也会丢失
2009/06/04 Javascript
Jquery拖拽并简单保存的实现代码
2010/11/28 Javascript
jQuery实现异步获取json数据的2种方式
2014/08/29 Javascript
JS控制表单提交的方法
2015/07/09 Javascript
基于BootStrap Metronic开发框架经验小结【六】对话框及提示框的处理和优化
2016/05/12 Javascript
浅析创建javascript对象的方法
2016/05/13 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
2016/08/20 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
JS判断是否手机或pad访问实现方法
2016/12/09 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
2018/03/06 Javascript
微信小程序仿朋友圈发布动态功能
2018/07/15 Javascript
JavaScript实现点击切换功能
2021/01/27 Javascript
Pythont特殊语法filter,map,reduce,apply使用方法
2016/02/27 Python
Python处理PDF及生成多层PDF实例代码
2017/04/24 Python
Python实现朴素贝叶斯的学习与分类过程解析
2019/08/24 Python
使用Python进行防病毒免杀解析
2019/12/13 Python
Python matplotlib实时画图案例
2020/04/23 Python
mac安装python3后使用pip和pip3的区别说明
2020/09/01 Python
python自动化测试三部曲之unittest框架的实现
2020/10/07 Python
意大利在线药房:Farmacia Loreto Gallo
2019/08/09 全球购物
如何利用cmp命令比较文件
2013/09/23 面试题
《三峡》教学反思
2014/03/01 职场文书
品质标语大全
2014/06/21 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
2014年家长学校工作总结
2014/11/20 职场文书
2015年行政人事部工作总结
2015/05/13 职场文书
2019年行政人事个人工作总结范本!
2019/07/19 职场文书
golang json数组拼接的实例
2021/04/28 Golang
如何使用Python提取Chrome浏览器保存的密码
2021/06/09 Python
详解Vue项目的打包方式(生成dist文件)
2022/01/18 Vue.js
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers