之前在公司内部的一后台界面,所有的视频都无法播放,浏览器抓包,从报错信息看是跨域问题导致,这里就简单纪录下
由于javascript的同源策略的限制问题,导致a.com域名下的js无法操作b.com域名下的对象,所谓同源是指相同的协议,例如http或者https,若相同即为同源。
同源包括: 相同协议,相同域名,端口
CORS 跨域资源共享,当前几乎所有的浏览器都可以通过跨域资源共享的协议支持ajax跨域调用,CORS 标准定义了一组新的 HTTP header,这组 header 给浏览器和服务器提供了一种判断跨域请求是否何法的依据。 因此,要实现 CORS,浏览器(client)和服务器(server)都应该遵守该约定。Origin 指定说明请求来自哪个源(协议+域名+端口) Access-Control-Allow-Origin 指定请求时Origin字段的值,例如后面写一个 * ,表示接受任意域名的请求 Access-Control-Allow-Credentials 表示是否允许发送Cookie,如果在CORS请求中不包含Cookie,则设为 true,否则删掉该字段 Access-Control-Allow-Headers 在跨域访问时,XMLHttpRequest对象的getResponseHeader()方法只能拿到一些最基本的响应头,Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma,如果要访问其他头,则需要服务器设置本响应头
CORS有两种请求:简单请求和非简单请求
简单请求包括:
非简单请求
非简单请求会发出一次监测请求,返回码是204,预监测通过才会发出请求,然后才返回200,前端可以通过在发请求是增加一个额外的Headers来出发非简单请求
以上参考文档: [CORS][1]