同源策略以及跨域资源共享在大部分情况下针对的是Ajax请求。同源策略主要限制了通过XMLHttpRequest实现的Ajax请求,如果请求的是一个“异源”地址,浏览器将不允许读取返回的内容。

支持同源策略的浏览器其实并不会阻止跨域请求的发送和响应的接收,它仅仅是阻止程序获取和操作返回的数据而已。
JSONP仅仅是利用<script>的src标签加载的脚本不受同源策略约束而采取的一种编程技巧,其本身并不是一种官方协议
JSONP只适用于HTTP-GET请求

Cross-Origin Resource Sharing

1 简单跨域资源请求

CORS规范将GET、HEAD和POST这三个HTTP方法视为“简单HTTP方法”,而将请求报头Accept, Accept-Language, Content-Language以及采用如下三种媒体类型的报头Content-Type称为“简单请求报头”
application/x-www-form-urlencoded
multipart/form-data
text/plain

CORS规范将服务如下条件的跨域资源请求划分为简单请求:请求采用简单HTTP方法,并且其自定义请求报头空或者所有自定义请求报头均为简单请求报头。

2 非简单跨域资源请求

按照CORS规范的规定,浏览器应该采用一种被称为“预检(Preflight)”的机制来完成非简单跨域资源请求。

The HTTP response headers
Access-Control-Allow-Origin: <origin> | *
Access-Control-Expose-Headers: X-My-Custom-Header, X-Another-Custom-Header

预检涉及的报头
Access-Control-Max-Age: <delta-seconds>
Access-Control-Allow-Methods: <method>[, <method>]*
Access-Control-Allow-Headers: <field-name>[, <field-name>]*

The HTTP request headers
Origin: <origin>
Access-Control-Request-Method: <method>
Access-Control-Request-Headers: <field-name>[, <field-name>]*

在默认情况下,利用XMLHttpReuqest发送的Ajax请求不会携带用户凭证相关的敏感信息,如果需要用户凭证附加到Ajax请求上,需要将XMLHttpReuqest的withCredentials 属性设置为True。
Access-Control-Allow-Credentials: true | false 表明服务器端是否支持用户凭证

最新文章

  1. Git系列教程二 基础介绍
  2. RecyclerView 滑动检测 (上滑 up)(下滑 down)(顶部 top)(底部 bottom)
  3. Codeforces 723C. Polycarp at the Radio 模拟
  4. PHP实例 表单数据插入数据库及数据提取 用户注册验证
  5. BZOJ2253: [2010 Beijing wc]纸箱堆叠
  6. 编程以外积累: 如何给项目生成类似VS2008的说明文档
  7. strace跟踪操作的详细内容
  8. C编译: 使用gdb调试
  9. spring boot无法启动,或者正常启动之后无法访问报404的解决办法
  10. Java基础(3) -字符串
  11. spring 纯注解方式 与AOP
  12. 在Eclipse中使用git把项目导入到git中--转载
  13. AngularJS 作用域(Scope)
  14. Sonatype Nexus Repository Manager修改密码不成功
  15. streaming简介
  16. 一文全解:利用谷歌深度学习框架Tensorflow识别手写数字图片(初学者篇)
  17. url最后的“/”是什么作用
  18. oracle 在存储过程或函数中得到异常sql
  19. Linux 静态库与动态库
  20. JAVA 线程池基本总结

热门文章

  1. 简述负载均衡和 CDN 技术
  2. Oracle视图编译错误解决办法
  3. 关于yii2的中文乱码问题
  4. Ubuntu 14.04报“leaking memory”错误
  5. Tair 分布式K-V存储方案
  6. Linux:Linux 常用命令讲解(软件、硬件、文件)
  7. thinkphp中的验证码的实现
  8. mybatis generator 用法
  9. dd命令的高级应用
  10. HTML5+ 初识,HBuilder,夜神模拟器,Webview