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中的默认参数详解
Jun 24 Python
Python 12306抢火车票脚本
Feb 07 Python
python numpy 一维数组转变为多维数组的实例
Jul 02 Python
对python 生成拼接xml报文的示例详解
Dec 28 Python
python安装pywin32clipboard的操作方法
Jan 24 Python
Python基础之循环语句用法示例【for、while循环】
Mar 23 Python
8种用Python实现线性回归的方法对比详解
Jul 10 Python
Python3 pandas 操作列表实例详解
Sep 23 Python
基于tensorflow for循环 while循环案例
Jun 30 Python
python正则表达式的懒惰匹配和贪婪匹配说明
Jul 13 Python
Pytest单元测试框架如何实现参数化
Sep 05 Python
Selenium 安装和简单使用的实现
Dec 04 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不用正则采集速度探究总结
2008/03/24 PHP
php生成缩略图示例代码分享(使用gd库实现)
2014/01/20 PHP
php sybase_fetch_array使用方法
2014/04/15 PHP
ThinkPHP使用smarty模板引擎的方法
2014/07/01 PHP
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
2014/07/04 PHP
php文件压缩之PHPZip类用法实例
2015/06/18 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
PHP实现基于回溯法求解迷宫问题的方法详解
2017/08/17 PHP
getElementById在任意一款浏览器中都可以用吗的疑问回复
2007/05/13 Javascript
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
面向对象的javascript(笔记)
2009/10/06 Javascript
Javascript创建自定义对象 创建Object实例添加属性和方法
2012/06/04 Javascript
使用AngularJS实现可伸缩的页面切换的方法
2015/06/19 Javascript
JavaScript实现获取用户单击body中所有A标签内容的方法
2017/06/05 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
2018/09/25 Javascript
vue使用better-scroll实现下拉刷新、上拉加载
2018/11/23 Javascript
Vue中keep-alive组件作用详解
2020/02/04 Javascript
详解vue组件之间的通信
2020/08/30 Javascript
[01:37]PWL S2开团时刻DAY1&2——这符有毒
2020/11/20 DOTA
[58:00]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第二场 2月7日
2021/03/11 DOTA
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
2014/07/04 Python
零基础学Python(一)Python环境安装
2014/08/20 Python
git进行版本控制心得详谈
2017/12/10 Python
python @property的用法及含义全面解析
2018/02/01 Python
Numpy之文件存取的示例代码
2018/08/03 Python
Python多分支if语句的使用
2020/09/03 Python
法国家具及室内配件店:home24
2017/01/21 全球购物
Unix如何添加新的用户
2014/08/20 面试题
办公室岗位职责
2014/02/12 职场文书
学习教师法的心得体会
2014/09/03 职场文书
护士先进个人总结
2015/02/13 职场文书
软件项目经理岗位职责
2015/04/01 职场文书
python实现简单倒计时功能
2021/04/21 Python
js之ajax文件上传
2021/05/13 Javascript
聊聊Python String型列表求最值的问题
2022/01/18 Python
python缺失值填充方法示例代码
2022/12/24 Python