什么是跨域
浏览器会有同源策略,域名,协议,端口只要有一个不同就是跨域.
同源策略只限制浏览器端,跨域请求是可以发去的,但是请求响应response被浏览器堵塞了,是限制了不同源的读,但不限制不同源的写,服务端没有同源策略这一限制,form表单可以跨域发送信息也是这个原因。
限制:
(1) Cookie、LocalStorage 和 IndexDB 无法读取。
(2) DOM 无法获得。
(3) AJAX 请求不能发送
浏览器某些静态文件加载标签不受同源策略限制:
解决跨域的方法
jsonp
原理:客户端告诉服务一个回调函数的名称,服务器在返回的scritp里面调用这个回调函数,同时传进客户端需要的数据,这样返回的代码就在浏览器执行了
优缺点:
常用方法,简单适用,老式浏览器全部支持,服务器改造非常小
只能实现get一种请求,不安全 容易遭到xss攻击
// 前端页面
function writeDate(_date){
document.write(_date);
}
// 服务端返回一个脚本,在这个脚本里面执行writeDate函数:
function getDate(response, callback){
response.writeHead(200, {"Content-Type": "text/javascript"});
var