1.jsonp跨域
原理:ajax本身是不可以跨域的,通过产生一个script标签来实现跨域。
因为script标签的src属性是没有跨域的限制的。
其实设置了dataType: 'jsonp'后,$.ajax方法就和ajax XmlHttpRequest
没什么关系了,取而代之的则是JSONP协议。JSONP是一个非官方的
协议,它允许在服务器端集成Script tags返回至客户端,通过javascript
callback的形式实现跨域访问。
`ajax的跨域写法:`
`js代码`
$.ajax({
type:"get",
url:"[http://localhost:3000/showAll](http://localhost:3000/showAll)",/*url写异域的请求地址*/
dataType:"jsonp",/*加上datatype*/
jsonpCallback:"cb",/*设置一个回调函数,名字随便取,和下面的函数里的名字相同就行*/
success:function(){}
});
如果你是用的第三方的接口,并且第三方的接口返回的数据格式为json的格式,这时候,你就不能的使用 jsonp的方式 来解决跨域问题,因为jsonp本身是可以解决跨域问题,但是前提是返回的数据格式必须的jsonp格式的数据,才可以使用jsonp
2.jsonp 利用script 的src属性
const script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://api.map.baidu.com/location/ip?callback=show&coor=bd09ll&ak=zdID84p3fMRLNHzegSlgSbe9';
document.body.appendChild(script);
function show (jsonp) {
console.log(jsonp)
}
网友评论