跨域的解决方式
1:JSONP: 只支持get请求
方式一:创建一个script标签,然后将回调函数作为参数,传给服务器
function callback (res) {}
var JSONP = document.createElement("script")
JSONP.type = "text/javascript"
JSONP.src = "url"
document.getElementsByTagName('head')[0].appentChild(JSONP)
方式二:直接使用script标签
function jsonpCallback(res){}
script type="text/javascript" src="http://crossdomain.com/services.php?callback=jsonpCallback
服务器返回数据:
jsonpCallback(data)
总结:
script请求的数据,是直接作为js代码进行运行的。
将回调函数的的名字传给服务器,服务器返回数据给前端时,将数据已如上形式返回,前端接收到后相当于直接调用了jsonpCallback这个函数
2:CORS协议
方法:前端一般什么也不做,只需要后台进行设置即可。后台在响应体中设置
如果需要跨域携带cookie,前端请求时需要设置withCredentials为true
Access-Control-Allow-Origin
Access-Control-Allow-Credentials
网友评论