JSONP解决跨域问题

本文介绍了跨域问题产生的原因及同源策略的基本概念,并详细解释了如何利用JSONP技术来解决跨域问题。通过一个具体的示例展示了如何创建一个script标签并设置其src属性指向包含回调函数的URL,从而实现跨域数据请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 跨域
    当前地址与调用的接口不同源时,会跨域。

  2. 同源策略
    ① 协议、域名、端口号一致视为同源
    ② 网络请求时,只能访问同源的接口,这样是为了安全,以不至于别人能随便访问自己的私有数据

  3. JSONP解决跨域问题
    如果我们想使用一些网上公用的API(比如:获取天气API),就不得不跨域。
    原理:利用script标签上的src属性没有跨域的问题

  4. 案例

    <input type="text" placeholder="城市" id="city">
    <button id="btn">获取天气信息</button>
    
    function getWeather(data) {
    	console.log(data); // 最终获取的数据
    	// 可以进行后续操作处理数据
    }
    let oCity = document.getElementById('city');
    let oBtn = document.getElementById('btn');
    oBtn.onclick = function () {
    	let oScript = document.createElement('script');
    	oScript.src = `https://query.asilu.com/weather/baidu?city=${oCity.value}&callback=getWeather`;   // 回调函数的函数名可以自定义,但需与上方的函数名保持一致
    	document.body.appendChild(oScript);
    }
    

    接口返回的是回调函数调用的格式,将script标签插入到body中时,就会调用getWeather方法,将天气信息通过参数传入。
    在这里插入图片描述

    页面效果
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值