你不知道的CORS跨域资源共享
了解下同源策略
1 . DOM 同源策略:即针对于DOM,禁止对不同源页面的DOM进行操作;如不同域名的 iframe 是限制互相访问。 2 . XMLHttpRequest 同源策略:禁止使用 XHR 对象向不同源的服务器地址发起 HTTP 请求。
1. 页面中的链接,重定向以及表单提交(因为表单提交,数据提交到action域后,本身页面就和其没有关系了,不会管请求结果,后面操作都交给了action里面的域)是不会受到同源策略限制的。 2. 资源的引入不受限制,但是js不能读写加载的内容:如嵌入到页面中的<script src="..."></script>,<img>,<link>,<iframe>等 为什么要跨域限制
1. 用户登录了自己的网站页面 a.com,cookie中添加了用户标识。 2. 用户浏览了恶意页面 b.com,执行了页面中的恶意 AJAX 请求代码。 3. b.com 向 a.com发起 AJAX HTTP 请求,请求会默认把 a.com对应cookie也同时发送过去。 4. a.com从发送的 cookie 中提取用户标识,验证用户无误,response 中返回请求数据;数据就泄露了。而且由于Ajax在后台执行,这一过程用户是无法感知的。
跨域决解方案 1. JSONP 跨域:借鉴于 script 标签不受浏览器同源策略的影响,允许跨域引用资源;因此可以通过动态创建 script 标签,然后利用 src 属性进行跨域; 缺点: 1.所有网站都可以拿到数据,存在安全性问题,需要网站双方商议基础token的身份验证。 2.只能是GET,不能POST。 3.可能被注入恶意代码,篡改页面内容,可以采用字符串过滤来规避此问题。 2. 服务器代理:浏览器有跨域限制,但是服务器不存在跨域问题,所以可以由服务器请求所要域的资源再返回给客户端。 3. document.domain、window.name 、location.hash:借助于iframe决解DOM同源策略 4. postMessage:决解DOM同源策略,新方案 5. CORS(跨域资源共享):这里讲的重点 CORS(跨域资源共享)
CORS简单使用
简单请求和非简单请求
1. 请求方法是如下之一: GET HEAD POST 2. 所有的Header都只包含如下列表中(没有自定义header): Cache-Control Content-Language Content-Type Expires Last-Modified Pragma
(编辑:ASP站长网) |