IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> CORS - Cross-origin resource sharing - 跨域资源共享 -> 正文阅读

[网络协议]CORS - Cross-origin resource sharing - 跨域资源共享

1,什么是CORS

? 允许浏览器向跨源(协议 + 域名 + 端口)服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制

2,特点

? 1,浏览器自动完成(在请求头中加入特殊头 或 发送特殊请求)

? 2,服务器需要支持(响应头中需要有特殊头)

  • 跨域它分为两种请求:
    1. 简单请求(Simple requests)
    2. 预检请求(Preflighted requests)

满足以下全部条件的请求为 简单请求

? 1,请求方法如下:

? GET or HEAD or POST

? 2,请求头仅包含如下:

? Accept

? Accept-Language

? Content-Language

? Content-Type

? 3,Content-Type 仅支持如下三种:

? application/x-www-form-urlencoded

? multipart/form-data

? text/plain

? 不满足以上任意一点的请求都是 预检请求

3、简单请求发送流

1,请求

? 请求头中 携带 Origin,该字段表明自己来自哪个域

? 2,响应

? 如果请求头中的Origin在服务器接受范围内, 则返回如下头

响应头作用备注
Access-Control-Allow-Origin服务器接受得域
Access-Control-Allow-Credentials是否接受Cooike可选
Access-Control-Expose-Headers默认情况下,xhr只能拿到如下响应头:Cache-Control,Content-Language,Content-Type,Expires,Last-Modified;如果有需要获取其他头,需在此指定可选

如果服务器不接受此域,则响应头中不包含 Access-Control-Allow-Origin

4,预检请求发送流程

? 1,OPTION 请求发起,携带如下请求头

请求头作用备注
Origin表明此请求来自哪个域必选
Access-Control-Request-Method此次请求使用方法必选
Access-Control-Request-Headers此次请求使用的头必选

2,OPTION 接受响应阶段,携带如下响应头

响应头作用备注
Access-Control-Allow-Origin同简单请求必选
Access-Control-Allow-Methods告诉浏览器,服务器接受得跨域请求方法必选
Access-Control-Allow-Headers返回所有支持的头部,当request有
‘Access-Control-Request-Headers’时,该响应头必然回复
必选
Access-Control-Allow-Credentials同简单请求可选
Access-Control-Max-AgeOPTION请求缓存时间,单位s可选

3,主请求阶段

请求头作用备注
Origin表明此请求来自哪个域

4,主请求响应阶段

响应头作用备注
Access-Control-Allow-Origin当前服务器接受得域
这里的预检请求与简单请求相比,预检请求会比简单请求多走一步,在进行cors跨域的时候,会先进行options请求,先与服务器进行商量,进行沟通,看那边是否支持跨域,会携带相应的请求头(具体看上面的表格),然后服务器会返回相应的响应头(具体以上表格),然后再进行主请求的发送响应阶段

5,Django支持配置和安装

django-cors-headers官网 https://pypi.org/project/django-cors-headers/

直接pip 将把django升级到2.0以上,建议用离线安装方式
配置流程

1,INSTALLED_APPS 中添加 corsheaders
		2,MIDDLEWARE 中添加 corsheaders.middleware.CorsMiddleware
		   位置尽量靠前,官方建议 ‘django.middleware.common.CommonMiddleware’ 上方
		3,CORS_ORIGIN_ALLOW_ALL  布尔值  如果为True 白名单不启用
		4,CORS_ORIGIN_WHITELIST =[
			"https://example.com"
		]
		5, CORS_ALLOW_METHODS = (
				'DELETE',
				'GET',
				'OPTIONS',
				'PATCH',
				'POST',
				'PUT',
				)
		6, CORS_ALLOW_HEADERS = (
				'accept-encoding',
				'authorization',
				'content-type',
				'dnt',
				'origin',
				'user-agent',
				'x-csrftoken',
				'x-requested-with',
			)
		#这个是设置支持跨域的有效时间
		7, CORS_PREFLIGHT_MAX_AGE  默认 86400s
		#设置给浏览器的另外的响应头
		8, CORS_EXPOSE_HEADERS  []
		#设置跨域的cookie要不要,默认不要
		9, CORS_ALLOW_CREDENTIALS  布尔值, 默认False
    
    离线安装:
    1、tar -zxvf django-cors-headers-3.0.2.tar.gz
    2、cd django-cors-headers-3.0.2
    3、sudo python3 setup.py install

下载django-cors-headers-3.0.2.tar.gz 已上传

django-cors-headers-3.0.2.tar.gz

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-01-04 13:46:39  更:2022-01-04 13:48:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 12:43:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码