一、跨源的定义
一个“源”有三部分组成:协议、域名、端口。任一部分不一致即为跨源。比如:(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邮箱文件上传中的应用
 
七、参考资料

跨源资源共享(CORS)的更多相关文章

  1. 跨源资源共享(CORS)概念、实现(用Spring)、起源介绍

    本文内容引用自: https://howtodoinjava.com/spring5/webmvc/spring-mvc-cors-configuration/ https://developer.m ...

  2. AmazonS3 使用AWS SDK for Java实现跨源资源共享 (CORS)

    CORS 配置 创建 CORS 配置并对存储桶设置该配置 通过添加规则来检索并修改配置 向存储桶添加修改过的配置 删除配置 import com.amazonaws.AmazonServiceExce ...

  3. CORS跨源资源共享概念及配置(Kubernetes Ingress和Spring Cloud Gateway)

    我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 跨源资源共享CORS 跨源资源共享 (CORS) (或通俗地译为跨域资源共享)是一种基于HTTP 头的机制,该机制通过 ...

  4. JS高程3:Ajax与Comet-进度事件、跨源资源共享

    有以下 6 个进度事件  loadstart:在接收到响应数据的第一个字节时触发.  progress:在接收响应期间持续不断地触发.  error:在请求发生错误时触发.  abort:在因 ...

  5. SpringBoot系列——CORS(跨源资源共享)

    前言 出于安全原因,浏览器禁止ajax调用当前源之外的资源(同源策略),我们之前也有写个几种跨域的简单实现(还在问跨域?本文记录js跨域的多种实现实例),本文主要详细介绍CORS,跨源资源共享,以及如 ...

  6. 彻底掌握CORS跨源资源共享

    本文来自于公众号链接: 彻底掌握CORS跨源资源共享 ) 本文接上篇公众号文章:彻底理解浏览器同源策略SOP 一.概述 在云时代,各种SAAS应用层出不穷,各种互联网API接口越来越丰富,H5技术在微 ...

  7. JavaScript跨源资源共享

    CORS(跨 源资源共享)基本思想,就是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应式应该成功还是失败 IE对CORS的实现 IE8引入了XDR类型,与XHR类似,但可以实现安 ...

  8. VUE SpringCloud 跨域资源共享 CORS 详解

    VUE  SpringCloud 跨域资源共享 CORS 详解 作者:  张艳涛 日期: 2020年7月28日 本篇文章主要参考:阮一峰的网络日志 » 首页 » 档案 --跨域资源共享 CORS 详解 ...

  9. 网络编程-跨域资源共享 CORS

    目录 1.什么是同源策略? 2.跨域资源共享 CORS 3.预检请求 4.CORS相关字段 5.Golang实现跨域 6.参考资料 1.什么是同源策略? 如果两个 URL 的 protocol.por ...

  10. 跨域资源共享(CORS)问题解决方案

    CORS:Cross-Origin Resource Sharing(跨域资源共享) CORS被浏览器支持的版本情况如下:Chrome 3+.IE 8+.Firefox 3.5+.Opera 12+. ...

随机推荐

  1. Linux里的用户管理

    在linux中系统中,它并不认识帐号名称.它认识的是我们的帐号ID,帐号ID保存在/etc/passwd文件中.我们在登录linux主机时,在输入完帐号和密码时,linux会先查找/etc/passw ...

  2. 在 Mac OS X 10.9 搭建 Python3 科学计算环境

    安装 Homebrew 使用 Homebrew 管理 Python 版本.在 Terminal/iTerm2 输入: $ ruby -e "$(curl -fsSL https://raw. ...

  3. postgress数据库 出现大写字母 字段名但是提示说不存在

    select BSK001 from dbdata 报错: column "bsk001" of relation "dbdata" does not exis ...

  4. Linux 常用命令大全(长期更新)

    常见指令 打包压缩相关命令 关机/重启机器 Linux管道 vim使用 用户及用户组管理 文件权限管理 更改文件的用户及用户组 更改权限 常用指令 ls 显示文件或目录 -l 列出文件详细信息l(li ...

  5. Hdp 4 window MR 注意事项

      1,本机未安装HDP, 在代码中加一个环境变量,跳过检查. Environment.SetEnvironmentVariable("HADOOP_HOME", @"D ...

  6. Difference **面向过程(或者叫结构化)分析方法**面向对象分析方法

    面向过程和面向对象的区别 面向过程是分析出解决问题所需要的步骤,然后一步步实现,面向对象是把构成问事件分解成各个对象,建立对象的目的是为了描述某个事物在整个解决问题的步骤中的行为. 可以说面向对象是从 ...

  7. 远程诊断DoIP

    目录 远程诊断DoIP Part 1: General information and use case definition DoIP诊断网络架构 诊断连接场景 DoIP之通信建立 DoIP中的一些 ...

  8. Python之freshman04

    一.迭代器 我们已经知道,可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list.tuple.dict.set.str等: 一类是generator,包括生成器和带yield的 ...

  9. AtCoder Beginner Contest 113 C

    C - ID Time limit : 2sec / Memory limit : 1024MB Score: 300 points Problem Statement In Republic of ...

  10. 【Python】struts2-045批量检测

    0x00   环境 存在struts2-045漏洞的war包 apache-tomcat 0x01   脚本 #coding:utf-8 import re import urllib import ...