一、跨源的定义
一个“源”有三部分组成:协议、域名、端口。任一部分不一致即为跨源。比如:(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. Bootstrap 基本css样式

    1.标题1级标题<h1> 38px 是默认大小的2.7倍2级标题<h2> 32px 是默认大小的2.25倍3级标题<h3> 24px 是默认大小的1.70倍4级标题 ...

  2. Georgia and Bob POJ - 1704 阶梯Nim

    $ \color{#0066ff}{ 题目描述 }$ Georgia and Bob decide to play a self-invented game. They draw a row of g ...

  3. bit、Byte、bps、Bps、pps、Gbps的单位的说明及换算

    一.bit与Byte区别 1. bit(比特) 是电脑记忆体的最小单元,在二进制计算机中,每一比特代表0或1的数位信号. 2. Byte(单位字节) 一般表示存储介质大小的单位,数字.字母和特殊符号占 ...

  4. php代码书写习惯优化小结

    (1)使用 static 静态方法比普通方法快4倍(2)echo输出快于print(3)连接字符使用 , 代替 .(4)循环之前先取出最大值,而不是在循环里面取值    正确的方法      $max ...

  5. java技术

    线程池的原理及实现:https://blog.csdn.net/hsuxu/article/details/8985931 Java高级工程师面试题总结及参考答案:https://www.cnblog ...

  6. css3之animation制作闪烁文字效果 转

    原文 http://www.w3cfuns.com/notes/13835/596cd96f59a09431a2343a9726c295d5.html <!DOCTYPE html>< ...

  7. A printf format reference page (cheat sheet)

    Summary: This page is a printf formatting cheat sheet. I originally created this cheat sheet for my ...

  8. docker 部署 笔记

    Docker虚拟机常用命令 先更新软件包 yum -y update   安装Docker虚拟机 yum install -y docker   运行.重启.关闭Docker虚拟机 service d ...

  9. mysql 查询月份数据.

    //查看本月数据 SELECT *FROMcontent_publishWHEREdate_format(publish_time, '%Y %m') = date_format(DATE_SUB(c ...

  10. MySql 碎片

    查看某个表所占空间,以及碎片大小. select table_name,engine,table_rows,data_length+index_length length,DATA_FREE from ...