django解决跨域请求的问题详解


Posted in Python onJanuary 20, 2019

解决方案

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中expandtabs()方法的使用
May 18 Python
python使用logging模块发送邮件代码示例
Jan 18 Python
Django实现登录随机验证码的示例代码
Jun 20 Python
selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
Nov 29 Python
python 实现视频流下载保存MP4的方法
Jan 09 Python
python的pyecharts绘制各种图表详细(附代码)
Nov 11 Python
keras 特征图可视化实例(中间层)
Jan 24 Python
Python内置函数locals和globals对比
Apr 28 Python
基于Python的一个自动录入表格的小程序
Aug 05 Python
python中os.remove()用法及注意事项
Jan 31 Python
pytorch 实现变分自动编码器的操作
May 24 Python
一小时学会TensorFlow2之基本操作2实例代码
Sep 04 Python
python 切换root 执行命令的方法
Jan 19 #Python
在Python 不同级目录之间模块的调用方法
Jan 19 #Python
python导入模块交叉引用的方法
Jan 19 #Python
python添加模块搜索路径和包的导入方法
Jan 19 #Python
python引用(import)某个模块提示没找到对应模块的解决方法
Jan 19 #Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
Jan 19 #Python
在pycharm 中添加运行参数的操作方法
Jan 19 #Python
You might like
PHP加密解密类实例代码
2016/07/20 PHP
JQuery select标签操作代码段
2010/05/16 Javascript
使用JS 清空File控件的路径值
2013/07/08 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
jquery遍历之parent()和parents()的区别及parentsUntil()方法详解
2013/12/02 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
浅谈JS中String()与 .toString()的区别
2016/10/20 Javascript
微信小程序 获取相册照片实例详解
2016/11/16 Javascript
12306 刷票脚本及稳固刷票脚本(防挂)
2017/01/04 Javascript
Javascript中的 “&” 和 “|” 详解
2017/02/02 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
2017/06/19 Javascript
JavaScript异步上传图片文件的实例代码
2017/07/04 Javascript
JS获取input[file]的值并显示在页面的实现方法
2018/03/09 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
vue 移动端记录页面浏览位置的方法
2020/03/11 Javascript
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
python网络编程之TCP通信实例和socketserver框架使用例子
2014/04/25 Python
在Django中使用Sitemap的方法讲解
2015/07/22 Python
Python Tkinter模块实现时钟功能应用示例
2018/07/23 Python
python logging模块书写日志以及日志分割详解
2019/07/22 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
2019/07/28 Python
Django+Celery实现动态配置定时任务的方法示例
2020/05/26 Python
设计师家具购买和委托在线市场:Viyet
2016/11/16 全球购物
巴黎欧莱雅法国官网:L’Oreal Paris
2019/04/30 全球购物
安全的后院和健身蹦床:JumpSport
2019/07/15 全球购物
德国家具折扣店:POCO
2020/02/28 全球购物
GWT (Google Web Toolkit)有哪些主要的原件组成?
2015/06/08 面试题
高级护理专业大学生求职信
2013/10/24 职场文书
中文专业学生自我评价范文
2014/02/06 职场文书
拓展策划方案
2014/06/03 职场文书
宣传标语大全
2014/07/01 职场文书
作风建设剖析材料
2014/10/06 职场文书
2015年世界环境日活动总结
2015/02/11 职场文书
读《瓦尔登湖》有感:每个人都需要一个瓦尔登湖
2019/10/17 职场文书
使用Bandicam录制鼠标指针并附带点击声音,还可以添加点击动画效果
2022/04/11 数码科技