跨域相关

同源策略 origin = 协议 + 域名 + 端口号 同源策略的限制: Cookie, LocalStorage 和 IndexDB 无法读取 DOM 无法获得 AJAX 无法发送 可跨域的标签 script,img,iframe, link等 JSONP 实质是一种自己发起的XSS 无法在 https 页面发起对非https的请求,会出现 Mixed content 错误 CORS方案 发起跨域请求时,浏览器会自动设置Origin首部,无法手动改变 在服务端的响应中设置Access-Control-Allow-Origin首部 但是这个首部不支持多个 host,所以如果需要支持多个 domain,需要动态地生成这个首部。比如说: < ?php $allowedOrigins = array("http://example.com", "http://localhost:63342"); $headers = getallheaders(); if ($headers["Origin"] && in_array($headers["Origin"], $allowedOrigins)) { header("Access-Control-Allow-Origin: " . $headers["Origin"]); } ?> 是否发送凭证 客户端: var xhr = new XMLHttpRequest(); xhr.withCredentials = true; 服务端添加 Access-Control-Allow-Credentials : true首部,如果服务器端没有返回这个首部,即使当前domain是允许的,客户端也得不到响应。会有类似 XMLHttpRequest cannot load http://example....

January 20, 2017