首页 > 其他分享 >django学习笔记05 跨域

django学习笔记05 跨域

时间:2023-11-25 13:31:48浏览次数:32  
标签:跨域 05 middleware django 域名 ALLOW CORS

跨域指的是:浏览器不能执行其他网站的脚本,从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域。跨域是由浏览器的同源策略造成的,是浏览器施加的安全限制。a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,所进行的访问行动都是跨域的。

在DJANGO里 解决这个问题需要装一个插件

#安装第三方应用

pip3 install django-cors-headers



MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    
    'corsheaders.middleware.CorsMiddleware',# 跨域
        
        
    'django.middleware.common.CommonMiddleware',
    #'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

以下是设置的一些方法


INSTALLED_APPS = [
	...,
	'corsheaders',
	'rest_framework',
]

MIDDLEWARES = [
	...,
	'corsheaders.middleware.CorsMiddleware', #注意在common的上方,官方建议
    'django.middleware.common.CommonMiddleware','
]


#允许前端请求携带Cookie(含sessionid)
CORS_ALLOW_CREDENTIALS = True  #会话保持必须

# CORS_ORIGIN_ALLOW_ALL = True  #允许所有的源跨域到django
CORS_ORIGIN_WHITELIST = (
    'http://127.0.0.1:5000', #格式严格
) #[]也可以

#非必须
CORS_ALLOW_METHODS = (
    "GET",
    "POST",
    "PUT",
    "DELETE",
    'OPTIONS'
    'PATCH',
    'VIEW'
)

#非必须
CORS_ALLOW_HEADERS = (
    "XMLHttpRequest",
    'token',
    'X_FILENAME',
    'accept',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
)
#暴露响应头,xhr才可以拿到响应头
CORS_EXPOSE_HEADERS = (
	'token',
)
#缓存options请求
CORS_PREFLIGHT_MAX_AGE = 86400  #秒

标签:跨域,05,middleware,django,域名,ALLOW,CORS
From: https://blog.51cto.com/u_15813778/8560263

相关文章

  • 【Django基础】视图层
    视图函数HttpResponse()作用:接收一个字符串并返回defindex_func(request):url=reverse('app01_view_index')print(url)returnHttpResponse('app01的index')render作用:返回html页面,并且在返回给浏览器之前还可以给html文件传值render()有多个参数,其中......
  • 【Django基础】urls路由
    简单示例fromdjango.urlsimportpathfrom.importviewsurlpatterns=[path('articles/2003/',views.special_case_2003),path('articles/<int:year>/',views.year_archive),path('articles/<int:year>/<int:m......
  • 基于django的4s店客户管理系统-计算机毕业设计源码+LW文档
    摘 要 进入21世纪网络和计算机得到了飞速发展,并和生活进行了紧密的结合。目前,网络的运行速度以达到了千兆,覆盖范围更是深入到生活中的角角落落。这就促使管理系统的发展。网上办公可以实现远程处理事务,远程提交工作和随时追踪工作的状态。网上管理系统给人们带来前所未有的体......
  • 【Django基础】操作数据库详解
    djangoORM简介O(objects):类和对象。R(Relation):关系,关系数据库中的表格。M(Mapping):映射。DjangoORM框架的功能:建立模型类和表之间的对应关系,允许我们通过面向对象的方式来操作数据库。根据设计的模型类生成数据库中的表格。通过方便的配置就可以进行数据库的切换。......
  • 【Django基础】Mysql数据库连接配置
    Django支持MySQL5.7及以上版本。Django的inspectdb功能使用information_schema数据库,其中包含所有数据库架构的详细数据。Django希望数据库支持Unicode(UTF-8编码),并将执行事务和引用完整性的任务交给它。django连接MySQL数据库,需要安装第三方数据库mysqlclientpip......
  • 【Django基础】Django新建项目
    安装Djangopipinstalldjango直接在pycharm中新建Django项目会自动安装django模块新建第一个项目django-adminstartprojectmysite项目目录mysite/manage.pymysite/__init__.pysettings.pyurls.pyasgi.pywsgi.p......
  • django13days
    csrf跨站请求伪造钓鱼网站:模仿一个正规的网站让用户在该网站上做操作但是操作的结果会影响到用户正常的网站账户但是其中有一些猫腻 eg:英语四六级考试需要网上先缴费但是你会发现卡里的钱扣了但是却交到了一个莫名其妙的账户并不是真正的四六级官方账户模拟钓鱼......
  • [Codeforces] CF1705C Mark and His Unfinished Essay
    题目传送门题意给定长度为\(n\)的字符串\(s\),进行\(c\)次操作,每次操作将\(s_l\)到\(s_r\)复制到字符串尾。全部操作结束后有\(q\)次询问,每次询问字符串\(s\)的第\(k\)位。数据保证\(r\)不超过当前字符串长度,\(k\)不超过最终字符串长度。思路及分析通过数......
  • Codeforces Round 905 (Div. 3)
    CodeforcesRound905(Div.3)A.Morning题意:操作:显示,向前走都为一次操作;目标:显示这四个数思路:0->10,然后依次作差就行#include<bits/stdc++.h>usingnamespacestd;voidsolve(){chara[4];intmi=100,sum=4,b[4];for(inti=0;i<4;i++){cin>>a[i]......
  • 使用PhpStudy配置Nginx解决跨域问题
    系统:Windows如果你是用phpstudy来进行lnmp的集成环境,你想解决跨域问题是很简单的:处理步骤:第一步:找到你前端要请求的后端接口的url的域名:比如:http://localhost2/index.php/index/test/helloworld那么域名就是localhost2第二步:找到域名对应的nginx配置文件位置打开phpstudy......