首页 > 其他分享 >django-cors-headers实现跨域的方法总结

django-cors-headers实现跨域的方法总结

时间:2022-11-09 15:31:36浏览次数:43  
标签:corsheaders 跨域 middleware django headers contrib MIDDLEWARE


django-cors-headers实现跨域的方法总结

在setting.py中配置

INSTALLED_APPS = [

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'django_cas_ng',

'DjangoUeditor',

'corsheaders',

]

MIDDLEWARE_CLASSES = [

'corsheaders.middleware.CorsMiddleware', #这个放到第一位

'django.middleware.security.SecurityMiddleware',

'django.contrib.sessions.middleware.SessionMiddleware',

'django.middleware.common.CommonMiddleware',

'django.middleware.csrf.CsrfViewMiddleware',

"corsheaders.middleware.CorsPostCsrfMiddleware",

'django.contrib.auth.middleware.AuthenticationMiddleware',

'django.contrib.messages.middleware.MessageMiddleware',

'django.middleware.clickjacking.XFrameOptionsMiddleware',

'django_cas_ng.middleware.CASMiddleware',

]

settings.py中添加:

CORS_ALLOWED_ORIGINS = [

"http://xxxxxxx" , #发起请求的URL要求添加端口和http

]

注意:

MIDDLEWARE_CLASSES = []



MIDDLEWARE= []

Django中的settings.py设置是MIDDL

EWARE,而这需要添加在MIDDLEWARE_CLASSES ,否则django-cors-headers的配置就不生效!所以始终都无法实现跨域,后来查资料才发现,修改为:

MIDDLEWARE_CLASSES = [

'corsheaders.middleware.CorsMiddleware', #这个放到第一位

'django.middleware.security.SecurityMiddleware',

'django.contrib.sessions.middleware.SessionMiddleware',

'django.middleware.common.CommonMiddleware',

'django.middleware.csrf.CsrfViewMiddleware',

"corsheaders.middleware.CorsPostCsrfMiddleware",

'django.contrib.auth.middleware.AuthenticationMiddleware',

'django.contrib.messages.middleware.MessageMiddleware',

'django.middleware.clickjacking.XFrameOptionsMiddleware',

'django_cas_ng.middleware.CASMiddleware',

]

MIDDLEWARE= [

'corsheaders.middleware.CorsMiddleware', #这个放到第一位

'django.middleware.security.SecurityMiddleware',

'django.contrib.sessions.middleware.SessionMiddleware',

'django.middleware.common.CommonMiddleware',

'django.middleware.csrf.CsrfViewMiddleware',

"corsheaders.middleware.CorsPostCsrfMiddleware",

'django.contrib.auth.middleware.AuthenticationMiddleware',

'django.contrib.messages.middleware.MessageMiddleware',

'django.middleware.clickjacking.XFrameOptionsMiddleware',

'django_cas_ng.middleware.CASMiddleware',

]

实现跨域成功:

注意:MIDDLEWARE也必须要添加,否则报错:'WSGIRequest' object has no attribute 'session',session无法获取!这是第二天登录后台才发现这个问题,记录之!

settings.py配置文件总结:

一共设置4处:

INSTALLED_APPS、MIDDLEWARE_CLASSES(注意配置项尽可能放在最前)、CORS_ALLOWED_ORIGINS、CSRF_TRUSTED_ORIGINS分别添加白名单,注意URL的格式。

启用此功能corsheaders.middleware.CorsPostCsrfMiddleware后django.middleware.csrf.CsrfViewMiddleware,还应该在之后 添加,MIDDLEWARE_CLASSES以撤消Referer替换.

如果出现下面问题

ModuleNotFoundError: No module named 'corsheaders'

运行Django项目的时候出现了这个问题,这个问题是Django跨域问题,安装django-cors-headers就可以解决这个跨域的问题。

pip install django-cors-headers

但是如果仍然有问题,那就是你的那个python Django的环境有问题了。

这个时候你需要去仔细地检查自己的python环境

或者下面的原因

应用是否在开发环境中进行注册?

INSTALLED_APPS = (
...
'corsheaders', # 注意:如果应用不是在最后一行,注册完一定不要忘记加上逗号噢,不然是会报错的
...
)


标签:corsheaders,跨域,middleware,django,headers,contrib,MIDDLEWARE
From: https://blog.51cto.com/u_15870497/5836771

相关文章

  • django 模糊查询
    //查询welldata中welltype为空的记录result=welldata.objects.filter(welltype__isnull=True)result=welldata.objects.filter(welltype=None)//查询welldata中welltyp......
  • 【luffy】前台全局样式、后台主页模块接口、跨域问题、自定义配置、git介绍和安装
    目录1.前台全局样式和js配置1.1bodydiv默认样式,统一去掉1.2全局配置2.后台主页模块接口2.1根据原型图分析出来2.2软件开发模式2.3轮播图表2.4轮播图接口编写3.......
  • django模板
    一、简介Django模板是使用Django模板语言标记的文本文档或Python字符串。模板引擎可以识别和解释一些结构。主要的是变量和标签。使用上下文呈现模板。渲染用它们的......
  • django视图
    一、简介视图是Django应用程序中的一种网页“类型”,通常提供特定功能并具有特定模板,在Django中,网页和其他内容是通过视图传递的。每个视图都由一个Python函数(或方法......
  • 解决 net core 3.x 跨域问题
    跨域:指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。以下几种情况是造成跨域的原因:域名相同,端口不......
  • python测试开发django-198.bootstrap-formvalidation校验成功发ajax请求
    前言form表单提交按钮是type="submit"类型,输入框按回车会自动提交表单。如果我们想自定义提交表单,可以使用ajax提交。Form表单一个登录页面的Form表单<fo......
  • Django限制用户上传文件格式与大小
    https://blog.csdn.net/weixin_42134789/article/details/100012339Django模型中自带的ImageField和FileField字段并不会也不能限制用户上传的图片或文件的格式和大小,这给......
  • django的auth模块学习
    auth1.我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能,这还真是个麻烦的事情......
  • django图片显示问题
        第二种是可以的......
  • 今日内容,项目模块接口开发和解决跨域问题
    前台全局样式和js配置1.把前端默认样式统一去掉,自己写一个应用到项目中,自定义自己的前端样式2.后端接口的地址统一,方便以后修改1.1assets/css/global.css/*声明......