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

  • 企业微博营销的推广方法和技巧(企业微博营销的定位有哪几种)

    企业微博营销的推广方法和技巧(企业微博营销的定位有哪几种)

  • 荣耀X30Max跑分

    荣耀X30Max跑分

  • qq空间删除访问记录对方还能看见吗(qq空间删除访问记录黄钻能看到吗)

    qq空间删除访问记录对方还能看见吗(qq空间删除访问记录黄钻能看到吗)

  • 芒果tv APP怎么变小窗口(芒果tv设置在哪儿)

    芒果tv APP怎么变小窗口(芒果tv设置在哪儿)

  • 华为手机关闭屏保图片自动下载怎么办(华为手机关闭屏幕显示时间怎么设置)

    华为手机关闭屏保图片自动下载怎么办(华为手机关闭屏幕显示时间怎么设置)

  • 小米CC9和美图壳通用吗(小米cc9和美图壳一样吗)

    小米CC9和美图壳通用吗(小米cc9和美图壳一样吗)

  • 苹果x如何开机(苹果X如何开机)

    苹果x如何开机(苹果X如何开机)

  • 华为nova2支持无线充电吗(nova2支持无线充电么)

    华为nova2支持无线充电吗(nova2支持无线充电么)

  • 手机微信表情怎么更新(手机微信表情怎么删除)

    手机微信表情怎么更新(手机微信表情怎么删除)

  • 如何判断摄像头坏了(如何判断摄像头开没开)

    如何判断摄像头坏了(如何判断摄像头开没开)

  • QQ被冻结一年(qq冻结一年多账号怎么解冻)

    QQ被冻结一年(qq冻结一年多账号怎么解冻)

  • 微信发动态不带图怎么发(微信发动态怎么不带图片)

    微信发动态不带图怎么发(微信发动态怎么不带图片)

  • 手机为什么变成黑白色(手机为什么变成黑白屏)

    手机为什么变成黑白色(手机为什么变成黑白屏)

  • 阿里巴巴是什么网站(阿里巴巴是什么支付方式)

    阿里巴巴是什么网站(阿里巴巴是什么支付方式)

  • 苹果x不能插耳机吗(苹果x为什么插不了耳机)

    苹果x不能插耳机吗(苹果x为什么插不了耳机)

  • iphone11亮度自动调节(iphone 11自动亮度)

    iphone11亮度自动调节(iphone 11自动亮度)

  • mate30pro有没有呼吸灯(华为mate30pro有呼叫功能吗)

    mate30pro有没有呼吸灯(华为mate30pro有呼叫功能吗)

  • 苹果11怎么弄九宫格(苹果11怎么弄九宫格切图)

    苹果11怎么弄九宫格(苹果11怎么弄九宫格切图)

  • 设备上sn是什么意思啊(设备sn号是什么)

    设备上sn是什么意思啊(设备sn号是什么)

  • 苹果x卡了什么原因(苹果x手机为什么卡)

    苹果x卡了什么原因(苹果x手机为什么卡)

  • 趣步为什么置换不了糖果(趣步商城为什么不能兑换)

    趣步为什么置换不了糖果(趣步商城为什么不能兑换)

  • 如何用代码加微信好友(代码加好友)

    如何用代码加微信好友(代码加好友)

  • cad属性在哪里打开(cad2020属性在哪里)

    cad属性在哪里打开(cad2020属性在哪里)

  • 京东白条如何还款(京东白条如何还清)

    京东白条如何还款(京东白条如何还清)

  • 登录页面的实现及跳转(vue-router)(登录页面的实现方式)

    登录页面的实现及跳转(vue-router)(登录页面的实现方式)

  • 使用 TF-IDF 算法将文本向量化(tf-idf计算)

    使用 TF-IDF 算法将文本向量化(tf-idf计算)

  • 汽车销售和租赁哪个大
  • 纳税申报 财务报表利润表
  • 向个人账户汇款选项
  • 主表第17栏应该等于定期
  • 民非企业附加税入什么科目
  • 企业购车支付购置税流程
  • 出口退税免税申报怎么报
  • 个体工商户能否开13的专票
  • 企业所得税的应纳税所得额的扣除项目有哪些
  • 小规模购买金税盘
  • 社保滞纳金可以计入管理费用吗为什么
  • 工程领用工程物资180万元
  • 企业的业务招待费多了好还是少了好
  • 上年度所得税费用又退回来了,如何做账
  • 经营现金流量为负数是什么意思
  • 电子商务企业类别有哪些
  • 小企业存货有哪些
  • 企业将自有资金无偿提供
  • 在win10中怎么从edge旧ie浏览器
  • 强制关闭mac系统的快捷键
  • 报销租房费用开发票
  • vue怎么使用本地存储比较好
  • 核定征收的小规模纳税人要做账吗
  • 企业之间拆借资金
  • 纳税人超过应缴纳税额缴纳的税款
  • 非成品柴油用途
  • php忘记密码功能
  • php语言采用什么方式执行
  • 亏损企业所得税怎么交
  • Cursor!!!GPT-4帮我写代码
  • 房屋折旧方法有哪些
  • 【原创】基于JavaWeb的医院预约挂号系统(医院挂号管理系统毕业设计)
  • zabbix 执行命令
  • php image
  • 金税盘中的发票修复是什么意思
  • 不计入法定期间的情形包括
  • 总公司发票可以从分公司付款吗
  • 定额备用金制度报销时用什么科目
  • spring整合mongodb
  • sql执行顺序优先级
  • 申请开立账户的请示
  • 小额收据入账规则最新
  • 临时工和正式工工资不一样违法吗
  • 暂估成本账务处理
  • 预缴增值税后税款怎么算
  • 股权投资所得是什么
  • 发行股票支付给证券商的费用计入哪
  • 红冲发票重开一定要一样的金额吗?
  • 企业固定资产没有加速折旧还填资产加速折旧表吗
  • 长期待摊费用的二级科目有哪些
  • 暂估入库做账
  • 坏账收回所得税需要确认收入吗汇算清缴表如何填报
  • 差旅费记入哪个费用
  • 叉车累计折旧如何结转
  • 报销单填写发票第几页交给财务
  • 营业外收入明细账图片
  • 投资收益怎么做帐
  • 进项税大于销项税需要交增值税吗
  • mysql修改表结构的命令
  • mysql的行转列
  • unix vi命令
  • go进程管理
  • lhotkey.exe
  • win10系统打开安装程序没反应
  • JavaScript对HTML DOM使用EventListener进行操作
  • cocos2dx游戏开发教程
  • Python装饰器实现几类验证功能做法实例
  • 获取本地ip地址失败
  • rsync include-from
  • php和python有什么区别
  • 详解python时间模块中的datetime模块
  • 如何搭建python项目架构
  • js的异步解决方案有哪些
  • javascript怎么学
  • js中slice方法的作用
  • 基于jQuery和Bootstrap的设计报告的参考文献
  • python动态绑定属性
  • 企业欠税交不起怎么办
  • 黄金消费税如何征收
  • 契税计算器在线计算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设