位置: 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 静态方法)

  • 华为平板和苹果平板哪个好(华为p9评测)(华为平板和苹果平板对比评测)

    华为平板和苹果平板哪个好(华为p9评测)(华为平板和苹果平板对比评测)

  • 网易云耳机怎么恢复双耳模式(网易云耳机怎么绑定网易云音乐)

    网易云耳机怎么恢复双耳模式(网易云耳机怎么绑定网易云音乐)

  • 优酷免流量怎么用(优酷免流量怎么关闭自动续费)

    优酷免流量怎么用(优酷免流量怎么关闭自动续费)

  • 如何知道是声控摄像头(如何知道是声控还是灯控)

    如何知道是声控摄像头(如何知道是声控还是灯控)

  • 锐龙3700x配什么显卡(amd锐龙3700x配什么显卡)

    锐龙3700x配什么显卡(amd锐龙3700x配什么显卡)

  • 华为手机移动数据打不开怎么回事(华为手机移动数据图标在哪里设置)

    华为手机移动数据打不开怎么回事(华为手机移动数据图标在哪里设置)

  • 快手小店保证金必须交吗(快手小店保证金多少钱)

    快手小店保证金必须交吗(快手小店保证金多少钱)

  • 抖音设备异常(抖音设备异常如何解决)

    抖音设备异常(抖音设备异常如何解决)

  • 苹果手机视频有回音怎么回事(苹果手机视频有噪音怎么回事)

    苹果手机视频有回音怎么回事(苹果手机视频有噪音怎么回事)

  • 苹果xsmax有单卡版本吗(苹果xsmax单卡好还是双卡好)

    苹果xsmax有单卡版本吗(苹果xsmax单卡好还是双卡好)

  • 快手怎么只直播音乐不露面(快手怎么只直播游戏画面)

    快手怎么只直播音乐不露面(快手怎么只直播游戏画面)

  • 以太网未启用dhcp什么意思(以太网未启用dhcp怎么解决 固定ip)

    以太网未启用dhcp什么意思(以太网未启用dhcp怎么解决 固定ip)

  • 单片机是计算机吗(单片机是计算机专业学的)

    单片机是计算机吗(单片机是计算机专业学的)

  • aicc和cs6有什么区别(illustrator cc和cs6有什么区别)

    aicc和cs6有什么区别(illustrator cc和cs6有什么区别)

  • 手机如何设置自动重拨(手机如何设置自动录音功能)

    手机如何设置自动重拨(手机如何设置自动录音功能)

  • 手机qq怎么看入群时间(手机qq怎么看我访问过的人)

    手机qq怎么看入群时间(手机qq怎么看我访问过的人)

  • 手机nfc功能怎么用(手机nfc功能怎么使用身份证)

    手机nfc功能怎么用(手机nfc功能怎么使用身份证)

  • 西瓜视频用什么剪辑(西瓜视频用什么拍摄)

    西瓜视频用什么剪辑(西瓜视频用什么拍摄)

  • 电信iptv如何安装app(电信iptv软件安装)

    电信iptv如何安装app(电信iptv软件安装)

  • 抖音正在审核是违规吗(抖音正在审核是要火吗)

    抖音正在审核是违规吗(抖音正在审核是要火吗)

  • 小米8通话声音小怎么设置(小米8通话声音小)

    小米8通话声音小怎么设置(小米8通话声音小)

  • iphone什么时候出的(iphone什么时候出的5g)

    iphone什么时候出的(iphone什么时候出的5g)

  • 芒果tv可以绑定几个手机(芒果tv可以绑定几个账号)

    芒果tv可以绑定几个手机(芒果tv可以绑定几个账号)

  • 手环怎么调时间和日期(oppo手环怎么调时间)

    手环怎么调时间和日期(oppo手环怎么调时间)

  • Vue官方学习笔记(vue笔记大全)

    Vue官方学习笔记(vue笔记大全)

  • 帝国CMS如何确定页面使用的是哪个模版(帝国cms视频教程)

    帝国CMS如何确定页面使用的是哪个模版(帝国cms视频教程)

  • 运输发票税率是9
  • 印花税的应税凭证名称怎么填写
  • 长期股权投资在哪个报表里
  • 企业发生的技术转让费应计入
  • 购买方已抵扣开具红字信息表之后做账需要什么原始凭证
  • 会计凭证填制要求有哪些
  • 长期股权投资属于金融资产吗
  • 物流 贷款
  • 跨年发票作废时间有限制吗
  • 外购电力费用分配例题
  • 免征增值税对应的进项税额怎么处理
  • 未收到发票可以计提成本吗
  • 营改增后还要交企业所得税吗
  • 增资缴纳印花税的计算公式?
  • 汽车折旧年限与什么有关
  • 未达起征点企业怎么处理
  • 查询税务信用评级
  • 转销和冲销是什么意思
  • 附加税费减免性质代码
  • 收到车险理赔款会计分录
  • 印花税的购销合同改成买卖合同了吗?
  • 个税0申报逾期一年
  • 收到政府补助的现金流
  • 驾校如何用完工百分比法确认收入?
  • 局域网文件共享不稳定
  • 盈余公积的来源及主要用途包括哪些
  • 赠与合同的法定撤销和任意撤销
  • windows10轻松使用是什么
  • 异地提供建筑服务预缴增值税
  • php面向对象编程
  • 怎么打开win11的控制面板
  • 在windows7操作具有
  • 撤销账户申请怎么写
  • 支付宝消费支出
  • 个税非居民是什么意思
  • 固定资产增值税税率
  • 债务重组收益的计算
  • 出口零退税率商品目录
  • 工资总额提取福利费
  • EarthLiveSharp中cloudinary的CDN图片缓存自动清理python脚本
  • 公司股东年底分红怎么做账
  • 个税中累计住房怎么计算
  • win10本地模式
  • 全连接神经网络是什么意思
  • 税负率过低犯法吗
  • 什么是符合资本化
  • 成本核算分摊方法总结
  • 以前年度损益调整结转到哪里
  • 工会经费记在什么科目
  • 购买空调报销写什么科目的
  • 融资租赁后期收入怎么算
  • 展会赠品
  • 核定征收每月最低交多少税
  • 上期留抵税额怎么在账上提现
  • 支付宝电子发票怎么开
  • 怎么判断政府
  • xp系统开机一直在滚动条
  • ati2plab.exe是什么进程 ati2plab进程安全吗
  • win8共享文件
  • 如何关闭office开机自启动
  • lnmgr.exe是什么
  • win7系统打不开网络和共享中心
  • win10系统出现问题怎么办
  • ios平台中glsl中shadow2DProjEXT函数的简单说明以及变换矩阵的小注意点
  • 如何使用jquery插件
  • Node.js中的construct
  • 让图片垂直居中
  • cmd命令怎么重启
  • nodejs怎么连接mysql
  • 基础的重要性
  • javascript详细介绍
  • python3.8.3怎么用
  • ios异步加载图片
  • js中的eval
  • python函数详解
  • python通过编程求权重
  • 税务局上下班路上能穿制服吗
  • 国有企业租赁经营 河北省
  • 外贸公司销售额可以10亿以上吗
  • 商铺转让要交哪些税费和费用
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设