php解决跨域的问题

解决跨域第一种方法: header头
//解决跨域问题

header("Access-Control-Allow-Origin:*");
header('Access-Control-Allow-Methods:POST');
header('Access-Control-Allow-Headers:x-requested-with, content-type');

创建一个中间件

php artisan make:middleware Api

在中间件写上这三行代码,分组使用中间件

第二种方法: jsonp格式
利用不拦截script的特性
把请求地址写入script标签中
例:<script src="http://127.0.0.1/jsonp.php"></script>
php 代码 使用 js方式把数据返回
例:

<?php
    $data=['ret'=>1,'msg'=>'xxx'];
    $data=json_encode($data);
    echo "alert($data)";
	//这样每次访问就会alert一次
	//所以在html前端 定义一个匿名函数方法用来接收返回的数据
	//前端:
<script src="http://127.0.0.1/jsonp.php">
    function aaa(res) {
        console.log(aaa);
    }
</script>

后端:

<?php
    $data=['ret'=>1,'msg'=>'xxx'];
    $data=json_encode($data);
    echo "aaa($data)";
	//这样后台不能每次询问前台返回的匿名方法名就定义一个变量传过来
<script src="http://127.0.0.1/jsonp.php?jsonpcallback=aaa">
    function aaa(res) {
        console.log(aaa);
    }
</script>

php代码:

<?php
    $data=['ret'=>1,'msg'=>'xxx'];
    $data=json_encode($data);
    $function_name=$_GET['jsonpcallback'];
    echo "$function_name($data)";

这样就可以进行下面操作了
jquery封装的解决跨域问题的jsonp方法:

<script>
    //ajax请求
    $.ajax({
        url: "http://127.0.0.1/jsonp.php",
        dataType: "jsonp", //指定服务器返回的数据类型
        jsonp: "invoker", //指定参数名称
        jsonpCallback: "data", //指定回调函数
        success:function (res) {
           		 console.log(res)//返回值
        }
   	 });
</script>

php 页面接收 $_GET['invoker'];参数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值