zoukankan      html  css  js  c++  java
  • 跨源资源共享(CORS)

    一、跨源的定义
    一个“源”有三部分组成:协议、域名、端口。任一部分不一致即为跨源。比如:(http,example.com,80)和(https,example.com,443)就是不同的源。
     
    二、同源策略
    XHR的早期版本限制应用只能执行同源请求,即新请求的来源必须与旧请求的来源一致,如果后续请求不同源,浏览器就拒绝该XHR请求并报错。浏览器对首部的保护:
    XHR API支持应用添加自定义的首部(通过setRequestHeader()方法),但有些首部是应用代码不能设定的:
    1、Accept-Charset、Accept-Encoding、Access-Control-*
    2、Host、Upgrade、Connection、Referer、Origin
    3、Cookie、Sec-*、Proxy-*以及其他首部
    浏览器会拒绝对不安全首部的重写,以此保证应用不能假扮用户代理、用户或者请求来源。保护首部Origin很重要,这是对所有XHR请求应用“同源策略”的关键。
     
    三、CORS 的应用场景
    如果服务器想给另一个网站中的脚本提供资源怎么办?CORS提供了安全的 选择同意机制。
     
    四、CORS底层处理机制
    跨源请求发出去之后,浏览器自动追加受保护的Origin HTTP首部,包含发出请求的来源。相应的远程服务器检查Origin首部,决定是否接受该请求,如果接受就返回Access-Control-Allow-Origin响应首部
     
    五、CORS安全措施
    CORS请求会省略cookie和HTTP认证等用户凭证
    客户端被限制只能发送“简单的跨域请求”包括只能使用特定的请求方法(GET、POST和HEAD)
    要启用cookie和HTTP认证,客户端必须在发送请求时通过XHR对象发送额外的属性(withCredentials),而服务器也必须以适当的首部(Access-Control-Allow-Credentials
     
    六、CORS在139邮箱文件上传中的应用
     
    七、参考资料
  • 相关阅读:
    高斯消元学习
    HDU 4596 Yet another end of the world(解一阶不定方程)
    Codeforces Round #318 div2
    HDU 4463 Outlets(一条边固定的最小生成树)
    HDU 4458 Shoot the Airplane(计算几何 判断点是否在n边形内)
    HDU 4112 Break the Chocolate(简单的数学推导)
    HDU 4111 Alice and Bob (博弈)
    POJ 2481 Cows(线段树单点更新)
    HDU 4288 Coder(STL水过)
    zoj 2563 Long Dominoes
  • 原文地址:https://www.cnblogs.com/hellohuman/p/3952298.html
Copyright © 2011-2022 走看看