保健励志美文体育育儿作文
投稿投诉
作文动态
热点娱乐
育儿情感
教程科技
体育养生
教案探索
美文旅游
财经日志
励志范文
论文时尚
保健游戏
护肤业界

CORS跨域资源共享CrossOriginResourceS

  一、CORS是如何工作的?
  基于Web的资源共享涉及到两个基本的角色,即资源的提供者和消费者。针对我们前面演示的应用场景,即显示在浏览器中的某个Web页面通过调用WebAPI的方式来获取它所需的资源,资源提供者为WebAPI本身,通过发送Ajax请求来调用WebAPI的JavaScript程序为资源的消费者。
  CORS旨在定义一种规范让浏览器在接收到从提供者获取的资源时能够正决定是否应该将此资源分发给消费者作进一步处理。CROS利用资源提供者的显式授权来决定目标资源是否应该与消费者共享。换句话说,浏览器需要得到提供者的授权之后才会将其提供的资源分发给消费者。那么,资源的提供者如何进行资源的授权,并将授权的结果告诉浏览器呢?
  具体的实现其实很简单。如果浏览器自身提供对CROS的支持,由它发送的请求会携带一个名为Origin的报头表明请求页面所在的站点。对于前面我们演示实例中调用WebAPI获取联系人列表的请求来说,它就具有如下一个Origin报头。
  1:Origin:http:localhost:9527
  资源获取请求被提供者接收之后,它可以根据该报头确定提供的资源需要共享给谁。资源提供者的授权通过一个名为AccessControlAllowOrigin的响应报头来承载,其报头值表示得到授权的站点。一般来说,如果资源的提供者认可了当前请求的Origin报头携带的站点,那么它会将该站点作为AccessControlAllowOrigin响应报头的值。
  除了指定具体的源并对其作针对性授权之外,资源提供者还可以将AccessControlAllowOrigin报头值设置为对所有消费者授权。换言之,如果作了这样的设置,意味着由其提供的是一种公共资源,所以在做此设置之前需要慎重。如果针对请求着的授权不被允许,资源提供者可以将此响应报头值设置为null,或者让响应不具有此报头。
  当浏览器接收到包含资源的响应之后,会提取此AccessControlAllowOrigin响应报头的值。如果此值为或者包含的源列表包含此前请求的源(即请求的Origin报头值),意味着资源的消费者获取了提供者获取和操作资源的权限,所以浏览器会允许JavaScript程序操作获取的资源。如果此响应报头不存在或者其值为null,客户端JavaScript程序针对资源的操作会被拒绝。
  二、对响应报头的授权
  资源提供者除了通过设置AccessControlAllowOrigin报头对提供的主体资源进行授权之外,还可以通过设置另一个名为AccessControlExposeHeaders的报头对响应报头进行授权。具体来说,此AccessControlExposeHeaders的报头用于设置一组直接暴露给客户端JavaScript程序的响应报头,没有在此列表的响应报头对于客户端JavaScript程序是不可见的。
  但是由此实现的针对响应报头的授权针对简单响应报头是无效的,客户端JavaScript程序总是具有获取它们的权限。对于CORS规范来说,这里所谓的简单响应报头(SimpleResponseHeader)包含如下6种。
  CacheControl
  ContentLanguage
  ContentType
  Expires
  LastModified
  Pragma
  我们知道用于实现Ajax请求的XMLHttpRequest具有一个getResponseHeader方法,调用它会返回一组响应报头的列表。按照这里介绍的针对响应报头的授权原则,只有在AccessControlExposeHeaders报头中指定的报头和简单响应报头才会包含在该方法返回的列表中。
  三、预检机制
  W3C的CORS规范将跨域资源请求划分为两种类型,一种被称为简单请求(SimpleRequest)。要弄清楚CORS规范将那些类型的跨域资源请求划分为简单请求的范畴,需要额外了解几个名称的含义,其中包括简单(HTTP)方法(SimpleMethod)、简单(请求)报头(SimpleHeader)和自定义请求报头(AuthorRequestHeaderCustomRequestHeader)。
  CORS规范将GET、HEAD和POST这三个HTTP方法视为简单HTTP方法,而将请求报头Accept,AcceptLanguage,ContentLanguage以及采用如下三种媒体类型的报头ContentType称为简单请求报头
  applicationxwwwformurlencoded
  multipartformdata
  textplain
  请求的报头包含两种类型,一类是通过浏览器自动生成的报头,另一种则是由JavaScript程序自行添加的报头(比如调用XMLHttpRequest的setRequestHeader方法可以为生成的Ajax请求添加任意报头),后者被称为自定义报头。
  CORS规范将服务如下条件的跨域资源请求划分为简单请求:请求采用简单HTTP方法,并且其自定义请求报头空或者所有自定义请求报头均为简单请求报头。之所以作如此划分是因为具有这些特性的请求不是以更新(添加、修改和删除)资源为目的,服务端对请求的处理不会导致自身维护资源的改变。
  对于简单跨域资源请求来说,浏览器将两个步骤(取得授权和获取资源)合二为一,由于不涉及到资源的改变,所以不会带来任何副作用(SideEffect)。如果针对请求的处理过程会涉及到对资源的改变,这样做就会有问题了。按照CORS规范的规定,浏览器应该采用一种被称为预检(Preflight)的机制来完成非简单跨域资源请求。
  所谓预检机制就是说浏览器在发送真正的跨域资源请求前,先发送一个预检请求(PreflightRequest)。预检请求为一个采用HTTPOPTIONS方法的请求,这是一个不包含主体的请求,同时用户凭证相关的报头也会被剔除。基于真正资源请求的一些辅助授权的信息会包含在此预检请求的相应报头中。除了代表请求页面所在站点的Origin报头之外,如下所示的是两个典型的请求报头。
  AccessControlRequestMethod:真正跨域资源请求采用的HTTP方法。
  AccessControlRequestHeaders:真正跨域资源请求携带的自定义报头列表。
  资源的提供者在接收到预检请求之后,根据其提供的相关报头进行授权检验,具体的检验逻辑即包括确定请求站点是否值得信任,以及请求采用HTTP方法和自定义报头是否被允许。如果预检请求没有通过授权检验,资源提供者一般会返回一个状态为400,BadReuqest的响应。反之则会返回一个状态为200,OK的响应,授权相关信息会包含在响应报头中。除了上面介绍的AccessControlAllowOrigin和AccessControlExposeHeaders报头之外,预检请求的响应还具有如下3个典型的报头。
  AccessControlAllowMethods:跨域资源请求允许采用的HTTP方法列表。
  AccessControlAllowHeaders:跨域资源请求允许携带的自定义报头列表。
  AccessControlMaxAge:浏览器可以将响应结果进行缓存的时间(单位为秒),这样可以让浏览器避免频繁地发送预检请求。
  浏览器在接收到预检响应之后,会根据响应报头确定后续发送的真正跨域资源请求是否会被接受,相关的检验包括针对服务端允许站点以及HTTP方法和自定义请求报头(利用响应报头AccessControlAllowMethods和AccessControlAllowHeaders)的检验。具体的检验逻辑如下
  通过请求的Origin报头表示的源站点必须存在于AccessControlAllowOrigin响应报头标识的站点列表中。
  响应报头AccessControlAllowMethods不存在,或者预检请求的AccessControlRequestMethod报头表示的请求方法在其列表之内。
  预检请求的AccessControlRequestHeaders报头存储的报头名称均在响应报头AccessControlAllowHeaders表示的报头列表之内。
  只有在确定服务端一定会接受的情况下,浏览器才会发送真正跨域资源请求。预检响应结果会被浏览器缓存,在AccessControlMaxAge报头设定的时间内,缓存的结果将被浏览器用户进行授权检验,所以在此期间不会再有预检请求发送。
  四、是否支持用户凭证
  在默认情况下,利用XMLHttpReuqest发送的Ajax请求不会携带用户凭证相关的敏感信息,这里的用户凭证类型包括Cookie、HTTPAuthentication报头以及客户端X。509证书(采用支持客户端证书的TLSSSL)等。如果需要用户凭证附加到Ajax请求上,需要将XMLHttpReuqest的withCredentials属性设置为True。
  对于CORS来说,是否支持用户凭证也是授权检验的一个环节。换句话说,只有在服务端显式支持用户凭证的情况下,携带了用户凭证的请求才会被认为是有效的。在W3C的CORS规范来说,服务端利用响应报头AccessControlAllowCredentials来表明自身是否支持用户凭证。
  也就是说,如果客户客户端JavaScript程序利用一个withCredentials属性为true的XMLHttpReuqest发送了一个跨域资源请求,但是浏览器得到的响应中不具有一个值为true的响应报头AccessControlAllowCredentials,它对获取资源的操作将会浏览器拒绝。

动物渴望的自由优秀作文自由,自由是什么?自由对小鸟来说,是能在天空自由自在地飞翔;对狮子来说,就是能摆脱人类的追捕;对我们小孩来说,是天天没作业,不受限制。有一天,我在家门口和妹妹玩耍,看到邻……发力无人配送,这家公司年内计划交付超两千台无人车记者于浩伴随着劳动力短缺成为热门议题,机器代人相关的诸多赛道正在展现出更多商业价值,无人配送就是其中之一。成立于2018年的新石器无人车是该赛道内的玩家之一。身为物……决定从小到大,我都是一个很有主见的孩子。所以妈妈也非常尊重我,只要是我的事,她总要和我商量商量。多少次,妈妈让我自己决定,而我,也作出了自己认为很好的决定。今年,学校有了轮滑……新的红米NOTE10PRO充电行,电量不耐用,你们怎么看?感谢您的阅读!首先看一下这一款手机,它的电池容量。红米note10Pro这款手机的电池容量为5000毫安时,并且拥有67W的快充。所以这款手机本身所拥有的电池容量还……耳鸣怎么治疗为什么配助听器以后更严重了?您好,如果单纯的耳鸣没有听力下降的话,一般不建议佩戴助听器,助听器没有治疗耳鸣的效果,根据不同的情况个体差异的不同患者的耳鸣情况也是不一样的,对于出现耳鸣的患者一般都没有太好的……哪类用户会坚持购买使用华为手机?你会选择华为手机吗?我坚持买华为手机。我认为,对于手机,坚持使用一个品牌,对学习熟悉掌握运用这个手机极有好处。我換了几代手机,也使用的N年手机,始终是华为手机不变。加之华为手机是国产的,一旦遇到什……我喜欢的景物作文范文我喜欢的景物1我爱海,它像一个蓝色的梦,环绕在我的心间。早晨的海是富有活力的,浪潮无休止的打过来,一浪迎一浪,溅出一朵朵白玉似的浪花,好像有使不完的力量和精力。略带……安全生产宣传标语大全导语:一幅寥寥数字的标语,不但折射着时代精神,也体现了执政的方向和智慧,其意义和作用是不容忽视的。今天就由小编为大家带来安全生产宣传标语大全,希望对大家有所帮助!安全生产宣传标……利德尔哈特的名言1、如同外科医生的手术箱里,有各种不同的工具一样,军事手段也只是达成大战略的手段之一。利德尔哈特2、使敌人丧失平衡,自己乱了阵脚,这才是战略的真正目的;其结果不是敌人自行……一次难忘的旅行作文800字我相信大多数人都会在假期外出旅游,也可能在家度过这个假期,但总会有一些难忘的事情可以分享,让大家体会一下你的假期生活和感受。现在我来分享我的一次寒假旅行!这个寒假,我和家……疫情中的感人故事作文导语:2020年的春节,似乎注定就是那样的不平凡,一切都是因为疫情的爆发,一起打败它!下面是小编为大家带来的疫情中的感人故事作文,我们一起来看看吧!疫情中的感人故事作文(一)……白雪公主新传的童话作文啦啦啦,啦啦啦,我是看书的小姑娘我一边哼着小曲,一边从书架上抽出了《格林童话》一个不小心,书架倒了,我也被书给砸晕了等我醒来后,发现自己正外在一个完全陌生的地方。这里高大……
初中父亲作文人们常说,父亲是那登天的梯,父亲是那拉车的牛;也有人说,父亲是家中的精神支柱,是全家的避风港。你心中父亲是什么样形象呢?下面一起随小编来欣赏关于初中的父亲作文吧。初中父亲作文1……我的好妈妈小学作文400字世上只有妈妈好,有妈的孩子像个宝,投进妈妈的怀抱,幸福享不了。我在妈妈的心中也是个宝。今年,我是一个三年级的小学生了,妈妈每天看着我茁壮地成长。记得有一年的初冬。一天我感……友爱的微笑看着李文急得满头大汗,手忙脚乱地翻着书包,不知所措的样子,我高兴极了,心想:哼!看你这次怎么办,等着挨批评吧李文是我在奥数班的同学,爱和人争吵,他也和我吵过架,我俩平时根……可爱的小狗小学记叙作文600字小白是姥姥家的一只狗,它有一个特征,除了两只耳朵上的毛是黄色的,身体其它部位都是白色的,这也是管它叫小白原因。小白是母狗,性格比较温顺,很可爱。我每次回姥姥家都会和小白一……妈妈我永远懂你的作文亲爱的妈妈:好像很久没有这样和你说过心里话了。如果你为我而受了什么委屈受了什么苦的话,我只想告诉你:妈妈,我懂,我懂你。每天晚上,当我拖着疲惫的身躯走出校门时,我总……读书全靠自用功1。我们愈是学习,愈觉得自己的贫乏。作者:雪莱2。书籍使一些人博学多识,但也使一些食而不化的人疯疯癫癫。作者:彼特拉克3。书犹药也,善读之可以医愚作者:刘向4……这就是我作文范文200字大家好!今年十岁了,在山西省,侯堡镇,潞安小学三年级(4)班的一名小学生。我有一头乌黑发亮的头发,总爱在后面扎个马尾辫。我有一双水灵灵的大眼睛,还有一张能说会道的小嘴,别……如果我是你小学作文600字世界上的每一个人都是独一无二的,你是唯一的个体,是无法替代的,是珍贵的、重要的,难道你不知道吗?你还在乎别人看你的目光,是羡慕还是歧视,还在乎别人对你的评价,是正确还是错……六年级的暑假日记朋友是一生的依靠,因为只有朋友,才会在该出现的场合出现,才会在不同的情况下扮演不同的角色。一会儿充当母亲安慰你;一会儿充当父亲鼓励你;一会儿充当老师关爱你。但是,朋友也是有区别……2017年高考作文拿高分的七大策略作文,在高考语文中占据着举足轻重的作用,高考作文存在着许多特殊性,那么要在有限的时间,紧张的环境下写出一篇能让阅卷老师喜欢的文章不仅需要好的写作能力还需要掌握一些应试技巧,小编……我心中的老是我心目中的老师洪泽实小品学网www。bs178。com六(8)班王漫州小荷作文网www。bs178。com老师,是多么神圣的职业!老师,是多么优秀的人类灵魂工……小兔我最喜欢的动物小兔子,它不仅天真烂漫和纯洁,有时也非常讨人喜欢。以前,我外婆有一只小兔子,似乎离娘不久,虽然有些调皮,也看的出它们得天真来。它有一对小小的通红的长耳……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网