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

  • 如何截屏手机上的内容(如何截屏)(如何截屏手机上的长图OPPO)

    如何截屏手机上的内容(如何截屏)(如何截屏手机上的长图OPPO)

  • 苹果手机怎么把旧手机的app转到新手机上(苹果手机怎么把旧手机的东西导入新手机)

    苹果手机怎么把旧手机的app转到新手机上(苹果手机怎么把旧手机的东西导入新手机)

  • iphone下滑控制中心怎么设置(iphone下滑控制中心怎么关闭)

    iphone下滑控制中心怎么设置(iphone下滑控制中心怎么关闭)

  • 快手怎么查询快币消费记录(快手怎么查询快递到哪里了)

    快手怎么查询快币消费记录(快手怎么查询快递到哪里了)

  • 华为畅享9有指纹解锁吗(华为畅享9有指南针吗)

    华为畅享9有指纹解锁吗(华为畅享9有指南针吗)

  • 快手私信怎么发语音(快手私信怎么发图片)

    快手私信怎么发语音(快手私信怎么发图片)

  • 关联以后登对方知道吗(关联以后登对方QQ能看到以前记录吗)

    关联以后登对方知道吗(关联以后登对方QQ能看到以前记录吗)

  • 苹果x底下12个孔干嘛的(苹果x底部孔位)

    苹果x底下12个孔干嘛的(苹果x底部孔位)

  • 快如闪电是MIUI哪个版本(快如闪电是什么生肖动物)

    快如闪电是MIUI哪个版本(快如闪电是什么生肖动物)

  • 苹果手机有视频通话美颜吗(苹果手机有视频剪辑功能吗)

    苹果手机有视频通话美颜吗(苹果手机有视频剪辑功能吗)

  • 直流电交流电区别(直流电和交流电在电路中的符号)

    直流电交流电区别(直流电和交流电在电路中的符号)

  • 为什么微信语音只能发1秒(为什么微信语音发不出去)

    为什么微信语音只能发1秒(为什么微信语音发不出去)

  • html怎么设置背景图片(html怎么设置背景透明度)

    html怎么设置背景图片(html怎么设置背景透明度)

  • 微信怎么设置自动收红包(微信怎么设置自己的铃声)

    微信怎么设置自动收红包(微信怎么设置自己的铃声)

  • 趣步置换怎么没了(趣步置换怎么没有优惠)

    趣步置换怎么没了(趣步置换怎么没有优惠)

  • 手机如何弄电子版照片(手机如何弄电子稿)

    手机如何弄电子版照片(手机如何弄电子稿)

  • max强制重启(max怎样重启)

    max强制重启(max怎样重启)

  • qq直播怎么开(qq直播怎么开不了)

    qq直播怎么开(qq直播怎么开不了)

  • wps文件在手机哪个文件夹(wps文件在手机哪个文件夹华为)

    wps文件在手机哪个文件夹(wps文件在手机哪个文件夹华为)

  • 微信电话录音怎么打开(微信电话录音怎么取消掉)

    微信电话录音怎么打开(微信电话录音怎么取消掉)

  • 如何解决Windows10麦克风无法录音?(如何解决Windows10电脑卡顿现象)

    如何解决Windows10麦克风无法录音?(如何解决Windows10电脑卡顿现象)

  • 如何安装IIS(如何安装iis网站服务器)

    如何安装IIS(如何安装iis网站服务器)

  • ntpq命令  查询NTP时间服务器信息(ntpd命令详解)

    ntpq命令 查询NTP时间服务器信息(ntpd命令详解)

  • yes命令  重复打印字符串(重复上次命令)

    yes命令 重复打印字符串(重复上次命令)

  • 应交税费借方余额0.01怎么调整
  • 消费税的账务处理流程
  • 增值税税率调整文件
  • 什么是非限制
  • 增值税扣费
  • 预付账款和暂估入账的区别
  • 分公司的税收机关在总公司还是分公司
  • 开办费抵扣多少企业所得税
  • 广告公司好进吗
  • 固定资产清理营业外支出汇算清缴需要调增吗
  • 工程公司收入成本入账
  • 企业自主研发的成功案例
  • 旅游服务费计入什么费用
  • 国家级企业孵化器是什么意思
  • 高温补贴需要交个人所得税吗2019
  • 软件企业研发费用占比要求
  • 研究开发费用扣除标准
  • 补缴的公积金可以取出来吗
  • 退车辆保险费如何计算
  • 无偿使用固定资产如何缴税
  • 物物交换增值税处理
  • 支付水电费如何记账
  • 进项票月初收到能抵上月
  • bwkp.exe是什么程序
  • 摇篮山圣克莱尔湖国家公园
  • 汇算清缴应补税额小于400
  • 实际收到的货款怎么做账
  • 车保险理赔的钱多久到账
  • water gardens
  • 贷款减值是什么会计科目
  • 关于php中一些字符的数据
  • php抓取
  • ChatGPT全面升级,GPT4支持多模态数据。
  • 怎么把html做成app
  • 外贸公司美金账户维护费用
  • 本月无开票企业怎么报税
  • 二季度报表是累计数吗
  • 招待客户住宿费进项税可以抵扣吗
  • xadmin配置
  • 收到以前年度增值税退税账务处理怎么做账
  • 增值税不得抵扣的情形
  • SQLServer2005 XML数据操作代码
  • 公司控股另一家公司好与坏
  • 公司印章样子
  • 私车公用的汽油费计入哪个科目
  • 请培训老师的费用怎么处理
  • 其他综合收益会影响未分配利润吗
  • 汇算清缴涉及的税种
  • 低值易耗品摊销表格
  • 在建工程里面的费用最后怎样结转
  • 简单征收的进项税怎么算
  • 付款申请单如何转填记账凭证
  • 工程服务预交税怎么算
  • 小规模纳税人缴税的分录
  • 应收账款期初余额错了怎么调整
  • 预付卡发票如何做分录
  • 个人交五险一金多少钱一个月
  • 生产成本比主营业务成本大
  • 财务会计与预算会计差异如何处理
  • 贴现办理流程
  • 对账簿设置的要求是什么
  • 企业货币资金主要包括哪些
  • sql server2012操作步骤
  • Win10应用商店下载错误
  • Win RT 8.1 Update 3怎么提前更新安装使用?
  • 通过u盘安装win11
  • windows7关机注销很慢
  • retail版win10
  • 虚拟主机 推荐
  • python入门笔记
  • vue 全局状态
  • input按钮的事件处理大全
  • js中dom的用法
  • python 系统日期
  • js轮播图视频教程
  • 整理的什么
  • Easyui 之 Treegrid 笔记
  • 中国依靠房地产能发展多久
  • 没有代理记账资格的公司能代理记账吗
  • 辽宁省地方税务局公告2014年第10号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设