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邮箱文件上传中的应用
     
    七、参考资料
  • 相关阅读:
    synchronized使用及java中的原子性问题
    Volatile 原理及使用,java并发中的可见性问题
    final 修饰符
    java 常见OPTS参数的含义
    Redis面试题
    Count(1),Count(*),Count(column)区别
    Mysql索引创建及删除
    springboot 非端口模式启动
    sql批量插入缓慢
    sql server sql语句导入数据到execl2007中
  • 原文地址:https://www.cnblogs.com/hellohuman/p/3952298.html
Copyright © 2011-2022 走看看