简单了解django处理跨域请求最佳解决方案

 更新时间:2020年03月25日 09:10:08   作者:jueyuanfengsheng  
这篇文章主要介绍了简单了解django处理跨域请求最佳解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一、什么是跨域请求

跨域:

简单来说就是 A 网站的 javascript 代码试图访问 B 网站,包括提交内容和获取内容。这显然是不安全的。为此,浏览器的鼻祖:网景(Netscape)公司提出了优秀的解决方案:著名的浏览器同源策略。现在所有支持JavaScript的浏览器都会使用这个策略。

同源:域名、协议、端口均相同的网站即为同源。

流程:

当一个浏览器的两个Tab页分别打开百度和谷歌页面时,百度发起一个脚本执行,此时浏览器会检查该脚本属于哪个页面。即检查是否同源。只有和百度同源的脚本才会被执行。若非同源,在请求数据时,浏览器会在控制台报一个异常。提示拒绝访问。

ps: 以上关于同源策略解释参考自百度百科-同源策略。

二、关于解决跨域请求

解决跨域请求从前端到后端有N种解决方式。我不在此一一列举。只分享一个目前看来对django处理跨域请求的最佳方案。

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',
)

通过以上配置,即可完美解决django跨域请求处理。唯一需要注意的就是cors-headers的中间件CorsMiddleware在注册时必须放在django-common中间件的前一个。

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

相关文章

  • Python 25行代码实现的RSA算法详解

    Python 25行代码实现的RSA算法详解

    这篇文章主要介绍了Python 25行代码实现的RSA算法,结合实例形式详细分析了rsa加密算法的概念、原理、相关实现技巧与注意事项,需要的朋友可以参考下
    2018-04-04
  • Python装饰器代码详解

    Python装饰器代码详解

    这篇文章主要介绍了python 一篇文章搞懂装饰器所有用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-10-10
  • Python Socket 编程知识点详细介绍

    Python Socket 编程知识点详细介绍

    这篇文章主要介绍了Python Socket 编程,Socket又称为套接字,它是所有网络通信的基础。网络通信其实就是进程间的通信,Socket主要是使用IP地址,协议,端口号来标识一个进程,下文详细内容,需要的小伙伴可以参考一下
    2022-02-02
  • 如何真正的了解python装饰器

    如何真正的了解python装饰器

    在本篇内容里小编给大家整理的是一篇关于如何真正的了解python装饰器的相关文章,需要的朋友们可以参考下。
    2020-08-08
  • PyCharm的设置方法和第一个Python程序的建立

    PyCharm的设置方法和第一个Python程序的建立

    今天小编就为大家分享一篇PyCharm的设置方法和第一个Python程序的建立,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 执行Django数据迁移时报 1091错误及解决方法

    执行Django数据迁移时报 1091错误及解决方法

    这篇文章主要介绍了执行Django数据迁移,报错 1091,需要的朋友可以参考下
    2019-10-10
  • Python深度学习之使用Albumentations对图像做增强

    Python深度学习之使用Albumentations对图像做增强

    诸如RandomCrop和CenterCrop之类的某些增强功能可能会变换图像,使其不包含所有原始边界框. 本示例说明如何使用名为RandomSizedBBoxSafeCrop的变换来裁剪图像的一部分,但保留原始图像的所有边界框,需要的朋友可以参考下
    2021-05-05
  • 两种方法检查Python中的变量是否为字符串

    两种方法检查Python中的变量是否为字符串

    在 Python 中,每个变量都有一个数据类型, 数据类型表示变量内部存储的数据类型,本文通过示例介绍两种不同的方法来检查 Python 中的变量是否为字符串,感兴趣的朋友一起看看吧
    2023-11-11
  • python实现黑客字幕雨效果

    python实现黑客字幕雨效果

    这篇文章主要为大家详细介绍了python实现黑客字幕雨效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Pandas分组与排序的实现

    Pandas分组与排序的实现

    这篇文章主要介绍了Pandas分组与排序的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07

最新评论