位置: IT常识 - 正文

CORS跨域资源共享问题(CORS跨域资源共享漏洞)

编辑:rootadmin
同源策略介绍 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现 请求的url地址,必须与浏览器上的url地址处于同域上,也就 ... 同源策略介绍

推荐整理分享CORS跨域资源共享问题(CORS跨域资源共享漏洞),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:cors跨域解决方案,cors跨域资源共享漏洞修复 ngnix,cors跨域资源共享漏洞修复,cors跨域资源共享漏洞修复,cors跨域资源共享,cors跨域资源共享解决,cors跨域资源共享漏洞修复,cors跨域资源共享,内容如对您有帮助,希望把文章链接给更多的朋友!

同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现

请求的url地址,必须与浏览器上的url地址处于同域上,也就是域名,端口,协议相同.

比如:我在本地上的域名是127.0.0.1:8000,请求另外一个域名:127.0.0.1:8001一段数据

浏览器上就会报错,个就是同源策略的保护,如果浏览器对javascript没有同源策略的保护,那么一些重要的机密网站将会很危险

已拦截跨源请求:同源策略禁止读取位于 http://127.0.0.1:8001/SendAjax/ 的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')。

但是注意,项目2中的访问已经发生了,说明是浏览器对非同源请求返回的结果做了拦截

CORS跨域资源共享介绍

CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。

整个CORS通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。

因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。

CORS基本流程

浏览器将CORS请求分成两类:简单请求(simple request)和非简单请求(not-so-simple request)。

浏览器发出CORS简单请求,只需要在头信息之中增加一个Origin字段。

CORS跨域资源共享问题(CORS跨域资源共享漏洞)

浏览器发出CORS非简单请求,会在正式通信之前,增加一次HTTP查询请求,称为”预检”请求(preflight)。浏览器先询问服务器,当前网页所在的域名是否在服务器的许可名单之中,以及可以使用哪些HTTP动词和头信息字段。只有得到肯定答复,浏览器才会发出正式的XMLHttpRequest请求,否则就报错。

CORS两种请求详解

只要同时满足以下两大条件,就属于简单请求。

(1) 请求方法是以下三种方法之一:HEADGETPOST(2)HTTP的头信息不超出以下几种字段:AcceptAccept-LanguageContent-LanguageLast-Event-IDContent-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain

凡是不同时满足上面两个条件,就属于非简单请求。

浏览器对这两种请求的处理,是不一样的。

* 简单请求和非简单请求的区别? 简单请求:一次请求 非简单请求:两次请求,在发送数据之前会先发一次请求用于做“预检”,只有“预检”通过后才再发送一次请求用于数据传输。* 关于“预检”- 请求方式:OPTIONS- “预检”其实做检查,检查如果通过则允许传输数据,检查不通过则不再发送真正想要发送的消息- 如何“预检” => 如果复杂请求是PUT等请求,则服务端需要设置允许某请求,否则“预检”不通过 Access-Control-Request-Method => 如果复杂请求设置了请求头,则服务端需要设置允许某请求头,否则“预检”不通过 Access-Control-Request-Headers

支持跨域,简单请求

服务器设置响应头:Access-Control-Allow-Origin = ‘域名’ 或 ‘*’

支持跨域,复杂请求

由于复杂请求时,首先会发送“预检”请求,如果“预检”成功,则发送真实数据。

“预检”请求时,允许请求方式则需服务器设置响应头:Access-Control-Request-Method“预检”请求时,允许请求头则需服务器设置响应头:Access-Control-Request-HeadersDjango项目中支持CORS

在返回的结果中加入允许信息(简单请求)

def test(request): import json obj=HttpResponse(json.dumps({'name':'lqz'})) # obj['Access-Control-Allow-Origin']='*' 所有的都可以通过 obj['Access-Control-Allow-Origin']='http://127.0.0.1:8004' #只针对该域名通过 return obj

放到中间件处理复杂和简单请求:

from django.utils.deprecation import MiddlewareMixinclass CorsMiddleWare(MiddlewareMixin): def process_response(self,request,response): if request.method=="OPTIONS": #可以加* response["Access-Control-Allow-Headers"]="Content-Type" response["Access-Control-Allow-Origin"] = "http://localhost:8080" return responsedjango 使用django-cors-headers 解决跨域问题

1、使用pip安装

pip install django-cors-headers

2、添加到setting的app中

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

3、添加中间件

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

4、setting下面添加下面的配置

CORS_ALLOW_CREDENTIALS = TrueCORS_ORIGIN_ALLOW_ALL = TrueCORS_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','Pragma',)
本文链接地址:https://www.jiuchutong.com/zhishi/313268.html 转载请保留说明!

上一篇:织梦dedecms网站怎么添加星期(织梦官方网站)

下一篇:python静态方法的用法(python3 静态方法)

  • 苹果手机怎样把健康码添加到桌面上(苹果手机怎样把照片拼图合成)

    苹果手机怎样把健康码添加到桌面上(苹果手机怎样把照片拼图合成)

  • mate30怎么开启防抖(华为mate30怎么设置防窥屏)

    mate30怎么开启防抖(华为mate30怎么设置防窥屏)

  • 红米note7连不上蓝牙耳机(红米note7连不上行车记录仪)

    红米note7连不上蓝牙耳机(红米note7连不上行车记录仪)

  • 实名认证有效期是什么意思(实名认证有效期多久)

    实名认证有效期是什么意思(实名认证有效期多久)

  • 华为10e微信分身在哪里(华为10s微信怎么分身)

    华为10e微信分身在哪里(华为10s微信怎么分身)

  • 微信通话中有电话进来(微信通话中有电话声音对方能听见吗)

    微信通话中有电话进来(微信通话中有电话声音对方能听见吗)

  • 苹果手机照片发不出去显示无法同步(苹果手机照片发原图怎么发)

    苹果手机照片发不出去显示无法同步(苹果手机照片发原图怎么发)

  • 打印机上三角形标志亮(打印机上三角形点点)

    打印机上三角形标志亮(打印机上三角形点点)

  • 抖音收到搬运通知 怎么处理(抖音出现搬运提醒,该怎么办)

    抖音收到搬运通知 怎么处理(抖音出现搬运提醒,该怎么办)

  • 华为p40有光学防抖吗(华为p40pro+光学防抖)

    华为p40有光学防抖吗(华为p40pro+光学防抖)

  • 优酷快进有震动怎么取消(手机优酷画面快进声音正常)

    优酷快进有震动怎么取消(手机优酷画面快进声音正常)

  • 苹果8p是什么屏幕(苹果8p屏幕是什么屏)

    苹果8p是什么屏幕(苹果8p屏幕是什么屏)

  • 荣耀大屏手机有哪些(荣耀新大屏手机)

    荣耀大屏手机有哪些(荣耀新大屏手机)

  • nex3 5g配置(nex3 5g参数配置)

    nex3 5g配置(nex3 5g参数配置)

  • x面容id进水能修吗(面容id进水维修)

    x面容id进水能修吗(面容id进水维修)

  • lphone尚未激活是什么意思(lphone尚未激活是啥意思)

    lphone尚未激活是什么意思(lphone尚未激活是啥意思)

  • 电热板温控器使用方法(电热板温控器使用教程视频)

    电热板温控器使用方法(电热板温控器使用教程视频)

  • 小米mix3耗电快的原因(mix3耗电严重)

    小米mix3耗电快的原因(mix3耗电严重)

  • 荣耀9x虚拟按键在哪(荣耀9x虚拟按键怎么设置)

    荣耀9x虚拟按键在哪(荣耀9x虚拟按键怎么设置)

  • 怎么取消qq名片封面(怎么取消qq名片王者战绩显示)

    怎么取消qq名片封面(怎么取消qq名片王者战绩显示)

  • 移动强制停机怎么恢复(中国移动强制停机是什么意思)

    移动强制停机怎么恢复(中国移动强制停机是什么意思)

  • nginx和tomcat区别

    nginx和tomcat区别

  • 闪送如何成为闪送员(闪送怎么做才能赚钱)

    闪送如何成为闪送员(闪送怎么做才能赚钱)

  • 电话拉黑了怎么拉出来(电话拉黑了怎么解除黑名单)

    电话拉黑了怎么拉出来(电话拉黑了怎么解除黑名单)

  • 手机怎么把图片反色(手机怎么把图片转换成pdf)

    手机怎么把图片反色(手机怎么把图片转换成pdf)

  • win10怎么看电脑被监控没(win10怎么看电脑名称)

    win10怎么看电脑被监控没(win10怎么看电脑名称)

  • 电脑中了勒索病毒怎么办?如何恢复?(电脑中了勒索病毒要报警吗)

    电脑中了勒索病毒怎么办?如何恢复?(电脑中了勒索病毒要报警吗)

  • Vue3 UI组件库对比,Naive UI、Element Plus、 Ant Design Vue(vue3.0组件库)

    Vue3 UI组件库对比,Naive UI、Element Plus、 Ant Design Vue(vue3.0组件库)

  • rtos.exe - rtos是什么进程 有什么用(rtos有什么用)

    rtos.exe - rtos是什么进程 有什么用(rtos有什么用)

  • java泛型方法的语法使用(java泛型方法的使用)

    java泛型方法的语法使用(java泛型方法的使用)

  • 什么是一般业务
  • 给职工租房的房租怎么进行账务处理?
  • 环评费用怎么入账
  • 联营企业子公司抵消比例
  • 2021年金税盘
  • 审计库存现金盘点方法
  • 即征即退免所得税吗
  • 转让旧房增值税计税依据
  • 公司收到银行转账会计分录
  • 公司年底奖金怎么算
  • 辅导期一般纳税人预缴增值税
  • 超市积分礼品
  • 自然人转让股权税收筹划
  • 建筑行业暂估成本的会计分录怎么写
  • 什么是应付债券简单举例
  • 销售后换回产品的账务处理怎么做?
  • 总公司签订合同发票开具给分公司是否可以抵扣
  • 差旅费税务要求比例
  • 外购固定资产对账怎么算
  • 彭布洛克郡谋杀
  • 失业保险稳岗补贴是什么意思
  • win10右键个性化显示该文件
  • php工程师职位描述
  • win10回滚系统
  • php system函数的用法
  • 房地产企业购地印花税如何入账
  • 竞业限制违反了怎么办
  • 圆顶山遗址
  • framework3.5怎么打开
  • php提取字符串中某个字符
  • 对公账户的银行卡号是几位数
  • html中a标签怎么引用图片
  • 员工报销发票怎么做账
  • OpenAI Translator | 基于ChatGPT API全局翻译润色解析插件
  • nerf新手入门
  • 增值税发票已经认证了,但是税票原票没给,会有什么后果
  • 固定资产减值损失属于营业外支出吗
  • 财政补助结转和财政补助结余
  • 网络使用费属于什么会计科目
  • c语言strncat函数用法
  • linux mongodb基本操作
  • SQL SERVER使用的是( )逻辑模型
  • sqlserver数据库获取当前时间
  • sql2008附加数据库
  • 商贸公司成本大吗
  • 增值税申报表里期初未缴税额是什么意思
  • 个人转租房需要注意什么
  • 物流公司贷款
  • 损益类会计科目有哪些
  • 建行单位结算卡如何取现金
  • 补发以前年度工资的账务处理
  • 抵扣旅客运输服务申报时填哪行
  • 发行优先股的发行费用
  • 管理不善存货盘亏计入什么科目
  • 贷款服务可以抵扣进项税额吗
  • 赠送购物券的会计处理
  • 银行存款实际余额不足
  • 个体户不交税会判刑吗?
  • 任务管理器已被管理员禁用怎么办
  • linux服务器安装虚拟机
  • freebsd怎么样
  • VM虚拟机安装Harmonyos4
  • 怎么提高xp系统运行速度
  • linux计划任务怎么写
  • win7win8.1win10哪个好
  • win8.1开机自启项目在哪里
  • Win10系统安装步骤
  • linux的shm共享内存
  • mac安装nodejs的权限问题
  • javaScript基础语法数据类型
  • java多线程最佳实践
  • 基拉大和 freedom
  • 怎么用python下载付费音乐
  • unity怎么写接口
  • javascript中的数据类型分为两大类
  • python 字符 字符串
  • python设计二叉树结构
  • 国家税务局网发票查验
  • 税务机关代收工会经费手续费
  • 城镇土地使用税优惠政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设