位置: 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桌面时间日期天气显示怎样恢复)

    oppo桌面时间日期天气显示怎么设置在中间(OPPO桌面时间日期天气显示怎样恢复)

  • 三星s10多少瓦快充(三星s10支持多大功率快充)

    三星s10多少瓦快充(三星s10支持多大功率快充)

  • 1+7pro和1+7对比(1+7pro对比1+7tpro)

    1+7pro和1+7对比(1+7pro对比1+7tpro)

  • 卡2开数据卡1就没信号了(卡2开数据卡1就没信号了华为)

    卡2开数据卡1就没信号了(卡2开数据卡1就没信号了华为)

  • 十代cpu和九代差距(十代cpu对比九代cpu)

    十代cpu和九代差距(十代cpu对比九代cpu)

  • 7p指纹不灵敏怎么回事(7p指纹识别不了什么原因)

    7p指纹不灵敏怎么回事(7p指纹识别不了什么原因)

  • 如何辨别airpods2代真假(如何辨别airpodspro一代二代)

    如何辨别airpods2代真假(如何辨别airpodspro一代二代)

  • 微信h5页面是什么(微信h5页面开发教程)

    微信h5页面是什么(微信h5页面开发教程)

  • mx110显卡能玩什么(mx110显卡可以玩大型游戏吗)

    mx110显卡能玩什么(mx110显卡可以玩大型游戏吗)

  • 苹果手机已停用是什么意思啊(苹果手机已停用,不用电脑怎么恢复)

    苹果手机已停用是什么意思啊(苹果手机已停用,不用电脑怎么恢复)

  • 华为p9和p9plus电池一样吗(华为p9plus和9plus区别)

    华为p9和p9plus电池一样吗(华为p9plus和9plus区别)

  • 怎样让微信文字不折叠(怎样让微信文字变成表情包)

    怎样让微信文字不折叠(怎样让微信文字变成表情包)

  • 如何安装win10(苹果air如何安装win10)

    如何安装win10(苹果air如何安装win10)

  • 手机ip地址查询定位(手机ip地址怎么切换)

    手机ip地址查询定位(手机ip地址怎么切换)

  • 手机怎么给照片命名(手机怎么给照片去阴影)

    手机怎么给照片命名(手机怎么给照片去阴影)

  • 抖音收藏好友能看到吗(抖音收藏的作品好友能看到吗)

    抖音收藏好友能看到吗(抖音收藏的作品好友能看到吗)

  • 梦与诗(梦与诗原文)

    梦与诗(梦与诗原文)

  • 三星手机截屏在哪里找(三星截屏在哪里)

    三星手机截屏在哪里找(三星截屏在哪里)

  • 苹果x防水到什么程度(苹果x防水不?)

    苹果x防水到什么程度(苹果x防水不?)

  • 华为am60怎么配对(华为am60能连接苹果手机吗)

    华为am60怎么配对(华为am60能连接苹果手机吗)

  • 小爱音箱怎么连接电脑(小爱音箱怎么连接蓝牙)

    小爱音箱怎么连接电脑(小爱音箱怎么连接蓝牙)

  • 谷歌商店白屏解决方法(谷歌商店打开白屏)

    谷歌商店白屏解决方法(谷歌商店打开白屏)

  • 优酷悬浮窗播放怎么弄(优酷 悬浮窗)

    优酷悬浮窗播放怎么弄(优酷 悬浮窗)

  • 如何使用腾讯手游助手在电脑上玩手游?(如何使用腾讯手机管家)

    如何使用腾讯手游助手在电脑上玩手游?(如何使用腾讯手机管家)

  • 加工企业税收优惠政策
  • 税控盘是干什么用的
  • 中级会计报名必须用ie浏览器吗
  • 收入费用表本期盈余和资产负债表本期盈余
  • 企业收到股利分红如何缴税
  • 小规模未开票收入如何填写申报表增值税
  • 个人提供劳务报酬需要到税务局开发票吗?
  • 开票和预缴税款跨月
  • 非税收入一般缴款书一式几联
  • 企业收到补贴需要开票吗
  • 向保险公司缴纳的保险费可以税前扣除吗
  • 签订合同后付款
  • 发票冲红需要什么手续
  • 应收账款坏账损失专项报告
  • 出售闲置材料账务怎么做
  • 一般纳税人收到专票怎么做分录
  • 发工资多发了可以要回吗
  • 银行收付款通知短信
  • 如何知道企业是查账征收还是核定征收
  • 白蚁防治费计入什么科目
  • 数字证书费
  • 公益捐款
  • 特许权使用费怎么入账
  • 一人独资公司设立的条件
  • 车船税收费标准2023年多少钱
  • 冲销以前年度多做的其他应收款
  • 一般纳税人接受固定资产投资时相关的科目可能有
  • 报销货物运输费需要什么凭证
  • 固定资产已提完折旧,但仍在使用,需要定期清理吗?
  • PHP:pg_num_rows()的用法_PostgreSQL函数
  • 发票开错了怎么处理好?
  • Vue3 & app.use 与 install 函数的作用
  • php输入框input代码
  • 对外支付企业所得税计税依据
  • php 文件系统
  • 老年人经常便秘怎么办
  • 处置子公司的方式
  • 承兑汇票到期超过10天怎么办
  • idea如何导入sql文件
  • 专项应付款怎么转固定资产
  • cmsv6无法连接服务器
  • 个税率是多少
  • 帝国cms如何使用
  • 应付账款可以用预收账款代替嘛
  • wordpress怎么安装插件
  • 如何移除白名单的电话号码
  • if三元表达式
  • 应付账款尾差如何处理
  • 上月结转余额怎么做会计分录
  • mysql跨库join
  • 专项储备计提和使用理解
  • 知道商品的进价怎么定售价
  • 银行承兑汇票是表内还是表外业务
  • 房地产开发企业成本核算方法
  • 商品损耗进项税额怎么算
  • 固定资产清理属于什么科目借方增加还是减少
  • 退回投标保证金在投诉阶段怎么办
  • 应付账款现金折扣会计分录
  • 销售商品的折扣
  • 建账的过程包括哪些内容
  • 关于sql的几道小知识
  • mysql 报错1045
  • sqlserver2000数据库连接不上
  • bios怎么设置efi引导
  • linux改变
  • win10系统电脑无法开机怎么办
  • win7主题服务未运行怎么办
  • win7怎么连接手机上网
  • win7系统IE浏览器一点就闪退
  • opengl 生成图片
  • 家字取名男孩名字
  • 到了这个年纪吉他谱完整版
  • jquery插件使用教程
  • jQuery中ajax的load()与post()方法实例详解
  • unity3d如何发布ios教程
  • javascript模块化规范
  • jquery获取复选框是否被选中
  • 工信部新车申报目彿
  • 税务实地核实工作程序
  • 城镇土地使用税的计算公式
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设