Django 跨域请求处理的示例代码


Posted in Python onMay 02, 2018

django处理Ajax跨域访问

使用javascript进行ajax访问的时候,出现如下错误

Django 跨域请求处理的示例代码

出错原因:javascript处于安全考虑,不允许跨域访问。下图是对跨域访问的解释:

Django 跨域请求处理的示例代码

概念:

这里说的js跨域是指通过js或python在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(Django)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。

解决办法

1. 修改views.py文件

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

todo_list = [
  {"id": "1", "content": "吃饭"},
  {"id": "2", "content": "吃饭"},
]


class Query(View):
  @staticmethod
  def get(request):
    response = JsonResponse(todo_list, safe=False)
    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

  @staticmethod
  def post(request):
    print(request.POST)
    return HttpResponse()

2. 添加中间件 django-cors-headers

GitHub地址: https://github.com/ottoyiu/django-cors-headers

2.1. 安装 pip install django-cors-headers

2。2 添加app

INSTALLED_APPS = (
  ...
  'corsheaders',
  ...
)

2.3 添加中间件

MIDDLEWARE = [ # Or MIDDLEWARE_CLASSES on Django < 1.10
  ...
  'corsheaders.middleware.CorsMiddleware',
  'django.middleware.common.CommonMiddleware',
  ...
]

2.4 配置允许跨站访问本站的地址

CORS_ORIGIN_ALLOW_ALL = False
CORS_ORIGIN_WHITELIST = (
   'localhost:63343',
)

# 默认值是全部:
CORS_ORIGIN_WHITELIST = () # 或者定义允许的匹配路径正则表达式.
CORS_ORIGIN_REGEX_WHITELIST = ('^(https?://)?(\w+.)?>google.com$', )  # 默认值:
CORS_ORIGIN_REGEX_WHITELIST = ()

2.5 设置允许访问的方法

CORS_ALLOW_METHODS = (
'GET',
'POST',
'PUT',
'PATCH',
'DELETE',
'OPTIONS'
)

2.6 设置允许的header:

默认值:

CORS_ALLOW_HEADERS = (
'x-requested-with',
'content-type',
'accept',
'origin',
'authorization',
'x-csrftoken'
)

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

Python 相关文章推荐
python中的编码知识整理汇总
Jan 26 Python
python实现壁纸批量下载代码实例
Jan 25 Python
django自带的server 让外网主机访问方法
May 14 Python
python读取Excel实例详解
Aug 17 Python
用Python写一个模拟qq聊天小程序的代码实例
Mar 06 Python
Django Rest framework解析器和渲染器详解
Jul 25 Python
Python中的list与tuple集合区别解析
Oct 12 Python
python实现QQ邮箱发送邮件
Mar 06 Python
tensorflow2.0的函数签名与图结构(推荐)
Apr 28 Python
使用PyWeChatSpy自动回复微信拍一拍功能的实现代码
Jul 02 Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
Aug 11 Python
Python用requests库爬取返回为空的解决办法
Feb 21 Python
python 按照固定长度分割字符串的方法小结
Apr 30 #Python
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
Apr 30 #Python
python版本的仿windows计划任务工具
Apr 30 #Python
Python装饰器原理与用法分析
Apr 30 #Python
Python中pillow知识点学习
Apr 30 #Python
Python生成器定义与简单用法实例分析
Apr 30 #Python
Python迭代器定义与简单用法分析
Apr 30 #Python
You might like
谨慎使用PHP的引用原因分析
2012/09/06 PHP
基于empty函数的输出详解
2013/06/17 PHP
php版微信返回用户text输入的方法
2016/11/14 PHP
javaScript 判断字符串是否为数字的简单方法
2009/07/25 Javascript
jQuery 1.5 源码解读 面向中高阶JSER
2011/04/05 Javascript
javascript nextSibling 与 getNextElement(node) 使用介绍
2011/10/13 Javascript
JavaScript单元测试ABC
2012/04/12 Javascript
浅谈关于JavaScript的语言特性分析
2013/04/11 Javascript
基于BootStrap环境写jQuery tabs插件
2016/07/12 Javascript
vue.js入门教程之绑定class和style样式
2016/09/02 Javascript
jQuery文字轮播特效
2017/02/12 Javascript
vue 2.0路由之路由嵌套示例详解
2017/05/08 Javascript
详解vue中使用express+fetch获取本地json文件
2017/10/10 Javascript
node内置调试方法总结
2018/02/22 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
2018/09/11 Javascript
微信小程序时间标签和时间范围的联动效果
2019/02/15 Javascript
使用vue制作滑动标签
2019/09/21 Javascript
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
2019/09/21 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
2020/11/10 Javascript
[01:37]全新的一集《真视界》——TI7总决赛
2017/09/21 DOTA
python实现在windows下操作word的方法
2015/04/28 Python
python计算牛顿迭代多项式实例分析
2015/05/07 Python
python基础_文件操作实现全文或单行替换的方法
2017/09/04 Python
python实现本地图片转存并重命名的示例代码
2018/10/27 Python
Python实现的各种常见分布算法示例
2018/12/13 Python
使用TensorFlow实现简单线性回归模型
2019/07/19 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
Python count函数使用方法实例解析
2020/03/23 Python
解决redis与Python交互取出来的是bytes类型的问题
2020/07/16 Python
pycharm-professional-2020.1下载与激活的教程
2020/09/21 Python
HTML5中meta属性的使用方法
2016/02/29 HTML / CSS
iPad和Surface Pro蓝牙键盘:Brydge
2018/11/10 全球购物
size?法国官网:英国伦敦的球鞋精品店
2020/03/15 全球购物
《长征》教学反思
2014/04/27 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书
python之基数排序的实现
2021/07/26 Python