laravel中使用jsonp

本文探讨了因同源策略限制导致的跨域数据访问难题,介绍了JSONP作为一种解决方案的原理与实现方式。通过示例代码,展示了如何利用jQuery的$.ajax方法进行跨域请求,并在服务器端设置回调函数返回数据。

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

解决的问题

由于javascript出于安全限制–同源策略(Same-Origin Policy),禁止访问当前项目之外的数据,jsonp正是解决这一问题。

jsonp使用ajax实现,但是区别与ajax,dataType为jsonp,同时增加了callback。

具体实现

  • html
//当前项目为test1.com,请求的数据在项目test2.com中
 $.ajax({
            url:'http://test2.com/api/user',
            async:false,
            type:'get',
            data:{name:'hzj'},
            dataType: 'jsonp',
            jsonp: 'callback',
            success:function (res) {
                console.log(res);
            }
        })
  • 跨域请求目标数据
//项目2
public function index(Request $request)
    {
    	$callback = $request->input('callback');
    	$data = [
    				[
    			'code'=>0,
    			'data'=>[1,2,3,4,5]]
    		];
    		
    	//方法1:
    	return response()->jsonp($callback, $data);
    	
    	//方法2:
    	return response()->json($data)->setCallback($callback);
    }

http://test2.com/api/user?callback=jQuery34103846720693359047_1581261009503&name=hzj&_=1581261009504
其中callback是客户端注册的回调方法;

  • 响应结果:

jQuery34103846720693359047_1581261009503([{“code”:0,“data”:[1,2,3,4,5]}]);

成功获取到数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值