【转】什么是CORS
CORS 全称是跨域资源共享(Cross-Origin Resource Sharing),是一种 AJAX 跨域请求资源的方式,支持现代浏览器,IE支持10以上。
CORS与JSONP的使用目的相同,但是比JSONP更强大。JSONP只支持GET请求,CORS支持所有类型的HTTP请求。JSONP的优势在于支持老式浏览器,以及可以向不支持CORS的网站请求数据。
CORS可以分成两种请求
浏览器将CORS请求分成两类:简单请求(simple request)和非简单请求(not-so-simple request)
只要同时满足以下两大条件,就属于简单请求
- 请求方法是以下三种方法之一:
HEAD
GET
POST
- HTTP的头信息不超出以下几种字段:
Accept
Accept-Language
Content-Language
Last-Event-ID
Content-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain
不同时满足上面两个条件,就属于非简单请求。
简单请求时 Request Headers
会添加一个 Origin
字段
Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4,pt;q=0.2,fr;q=0.2
Cache-Control:no-cache
Connection:keep-alive
Host:b.code.com:8080
Origin:http://a.code.com:8080
Pragma:no-cache
Referer:http://a.code.com:8080/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
以上会出现本次请求来自哪个源(协议 + 域名 + 端口),
Origin
指定的源,不在许可范围内,服务器会返回一个正常的HTTP回应。
Connection:keep-alive
Content-Length:430
Content-Type:application/json; charset=utf-8
Date:Tue, 25 Apr 2017 14:08:44 GMT
ETag:W/"1ae-VP1n2Jqobg5OeVKZa52pn4FP1/k"
X-Powered-By:Express
Response Headers
没有包含 Access-Control-Allow-Origin
字段,
服务器抛出XMLHttpRequest不能加载的错误
XMLHttpRequest cannot load http://b.code.com:8080/getNews. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://a.code.com:8080' is therefore not allowed access.
如果 Origin
指定的域名在许可范围内,服务器返回的响应,会多出1个头信息字段。
Access-Control-Allow-Origin:http://a.code.com:8080
对 Access-Control-Allow-Origin
的值要么是请求时Origin
字段的值,要么是一个*
,表示接受任意域名的请求。
// 限制当前请求http://a.code.com:8080可以获取数据
header("Access-Control-Allow-Origin", "http://a.code.com:8080");
// 接受任何请求
// header("Access-Control-Allow-Origin", "*");
以上就可以跨域资源共享,实现跨域。
查看实例代码
https://boloog.github.io/demos/Cross-domain/mp4/cors.mp4
2人点赞
日记本
作者:柏龙
链接:https://www.jianshu.com/p/e79024ba9cc7
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【转】什么是CORS相关推荐
- 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题
继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...
- Access to XMLHttpRequest at file from origin ‘null‘ has been blocked by CORS policy谷歌浏览器本地打开项目js文件报错
Access to XMLHttpRequest at 'file:///xxxxx/PQ.BaseInfo.proto' from origin 'null' has been blocked by ...
- kotlin设置CORS跨域资源共享,java设置允许跨域,服务端如何设置 springboot中设置跨域资源共享
CORS通信过程,都是浏览器或http插件自动完成,不需要 用户/开发人员 参与.对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码是完全一样的.浏览器一旦发现AJAX请求跨源,就会自动添 ...
- 转 小辉_Ray CORS(跨域资源共享)
前言:上一篇文章在写如何使用JSONP实现跨域请求的时候,偶然间提到CORS,即Cross-Origin Resource Sharing(跨域资源共享).虽然前些天也看了一下CORS相关的文章,但是 ...
- host ntrip 千寻rtk_什么是千寻知寸cors账号?它提供的定位服务精度如何?使用时需要注意哪些问题?...
千寻知寸cors账号FindCM:基于RTK技术的厘米级差分数据播发服务,终端设备收到差分数据后,结合自己的卫星观测数据进行高精度定位解算,在观测环境良好的情况下,统计精度可以达到水平2~5厘米,高程 ...
- CORS漏洞利用检测和利用方式
CORS全称Cross-Origin Resource Sharing, 跨域资源共享,是HTML5的一个新特性,已被所有浏览器支持,不同于古老的jsonp只能get请求. 检测方式: 1.curl访 ...
- ASP.NET Web API自身对CORS的支持:从实例开始
在<通过扩展让ASP.NET Web API支持W3C的CORS规范>中我们通过自定义的HttpMessageHandler为ASP.NET Web API赋予了跨域资源共享的能力,具体来 ...
- 不同版本浏览器前端标准兼容性对照表以及CORS解决跨域和CSRF安全问题解决方案
CORS也已经成为主流的跨域解决方案,不过CORF也会引发CSRF,本文先分享第三方的一个前端工具箱全面展示那些浏览器版本支持CORS,由于各家浏览器厂商因为各自原因在不同的版本里支持的标准不同,这个 ...
- HTTP访问控制(CORS)
跨站 HTTP 请求(Cross-site HTTP request)是指发起请求的资源所在域不同于该请求所指向资源所在的域的 HTTP 请求.比如说,域名A(http://domaina.examp ...
- 跨域资源共享 CORS
简介 CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing). 它允许浏览器向跨源服务器,发出XMLHttpRequest请 ...
最新文章
- css新闻列表优化-突破思维新方法更利于搜索引擎
- Zookeeper分布式一致性原理(二):一致性协议
- 人身三流指什么_电气隔离是什么意思呢?
- boost::fusion::traits::is_sequence用法的测试
- LeakCanary 源码分析
- JVM内存管理机制和垃圾回收机制
- 架构宣言: MDA 实战
- 【DP】小明游天界(zjoj 2149)
- 移动应用开发——实验六
- python 查询sqlserver 视图_在Python中,将SQL查询的输出显示为表,就像在SQL中一样...
- 【Android Developers Training】 1. 创建一个Android项目工程
- 人生每一件事都是为自己而做
- MxsDoc文档管理系统 - 中小型企业和个人用户最好的选择
- 皮卡丘为什么不进化_皮卡丘为什么不进化?
- 染色问题java_java地图路径染色寻找算法
- 中国历史各王朝的知识点总结记忆
- 如何写好博客——常用标点符号易错点正确用法汇总
- python计算行列式(使用下三角方式)
- 新晋小王子 doodoo.js Node.js开发框架
- mysql中长整型是longint_整型int和长整型long
热门文章
- centos踩坑指南之安装composer
- 洛谷P3628 [APIO2010]特别行动队(斜率优化)
- python开发学习笔记之六(面向对象)
- BZOJ 4034: [HAOI2015]T2 树链剖分
- win7 dos窗口输入命令必须加后缀问题,例如 java必须输java.exe
- 带给你灵感的3D街画艺术设计
- 华南师范大学计算机学院广东录取,华南师范大学2020年广东省各批次分专业录取分数统计(含位次)...
- 撤销 恢复快捷键 Linux,Linux Vim撤销和恢复撤销快捷键用法详解
- php npm,php – Laravel中NPM,Composer和Bower的区别?
- java中的集合框架_JAVA中的集合框架(上)List