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 相关文章推荐
Django中模版的子目录与include标签的使用方法
Jul 16 Python
centos6.4下python3.6.1安装教程
Jul 21 Python
python+mongodb数据抓取详细介绍
Oct 25 Python
caffe binaryproto 与 npy相互转换的实例讲解
Jul 09 Python
对python 命令的-u参数详解
Dec 03 Python
python自动生成model文件过程详解
Nov 02 Python
TensorFlow tensor的拼接实例
Jan 19 Python
浅谈Python 函数式编程
Jun 20 Python
python2和python3哪个使用率高
Jun 23 Python
学点简单的Django之第一个Django程序的实现
Feb 24 Python
Python 图片添加美颜效果
Apr 28 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
PHP中date()日期函数有关参数整理
2011/07/19 PHP
PHP、Java des加密解密实例
2015/04/27 PHP
PHP查找与搜索数组元素方法总结
2015/06/12 PHP
PHP数组操作简单案例分析
2016/10/15 PHP
PHP微信分享开发详解
2017/01/14 PHP
php字符集转换
2017/01/23 PHP
php 判断IP为有效IP地址的方法
2018/01/28 PHP
PHP实现通过文本文件统计页面访问量功能示例
2019/02/13 PHP
Prototype使用指南之enumerable.js
2007/01/10 Javascript
Javascript 读书笔记索引贴
2010/01/11 Javascript
jquery EasyUI的formatter格式化函数代码
2011/01/12 Javascript
jQuery弹出层始终垂直居中相对于屏幕或当前窗口
2013/04/01 Javascript
js正则表达exec与match的区别说明
2014/01/29 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
2014/10/10 Javascript
Js与Jq获取浏览器和对象值的方法
2016/03/18 Javascript
js实现适合新闻类图片的轮播效果
2017/02/05 Javascript
纯js仿淘宝京东商品放大镜功能
2017/03/02 Javascript
VUE引入第三方js包及调用方法讲解
2019/03/01 Javascript
详解Vue.directive 自定义指令
2019/03/27 Javascript
[03:59]第二届DOTA2亚洲邀请赛选手传记-VGJ.rOtk
2017/04/03 DOTA
python插入数据到列表的方法
2015/04/30 Python
Python中的FTP通信模块ftplib的用法整理
2016/07/08 Python
Python 中开发pattern的string模板(template) 实例详解
2017/04/01 Python
Python装饰器限制函数运行时间超时则退出执行
2019/04/09 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
2019/08/22 Python
利用python计算时间差(返回天数)
2019/09/07 Python
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
2014/09/09 面试题
自我评价200字分享
2013/12/17 职场文书
幼儿园中秋节活动方案
2014/02/06 职场文书
对孩子的寄语
2014/04/09 职场文书
民族团结先进个人事迹材料
2014/06/02 职场文书
消夏晚会主持词
2015/06/30 职场文书
情况说明书怎么写
2015/10/08 职场文书
2016年“12.3”国际残疾人日活动总结
2016/04/01 职场文书
入党心得体会
2019/06/20 职场文书