laravel(包含lumen)框架中的跨域函数实例

  1. 设置允许所有的网站使用普通ajax的方式的跨域解决
    // 获取支持跨域的js返回
    public function tokenKy(){
        $data = [
            'a'=>1,
            'b'=>2,
            'c'=>3,
        ];
        return response()
            ->json($data)
            ->header('Access-Control-Allow-Origin', '*');
    }
  1. 使用函数自行构建的jsonp的回调形式的跨域解决
// 获取jquery的callback的跨域处理的js
public function tokenCb2(Request $request){
    $callback = $request['callback'] ?? 'callback';
 
    // 返回的数据
    $data = [
        'a'=>1,
        'b'=>2,
        'c'=>3,
    ];
 
    $result = $callback."(".json_encode($data).")";
 
    return response($result)
        ->header('Content-Type', 'application/javascript;charset=utf-8');
}
  1. 使用laravel(或者lumen)的内置函数的跨域解决[推荐]
// 使用lumen支持的跨域返回值
    public function tokenCb(Request $request){
        $callback = $request['callback'] ?? 'callback';
        // 返回的数据
        $data = [
            'a'=>1,
            'b'=>2,
            'c'=>3,
        ];
        return response()
            ->json($data)
            ->setCallback($callback);
    }

在这里推荐使用第三种方法,第二种方法为你展示了,跨域解决的原理

posted @ 2020-04-12 23:20  houxin  阅读(153)  评论(0编辑  收藏  举报