一、Header类
在thinkphp框架中,可以使用Header类来对响应头进行设置,从而实现跨域请求的功能。具体的方法是在控制器方法中添加以下代码:
header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
其中,第一行代码表示允许所有来源的跨域请求,也可以设置为具体来源;第二行代码表示允许跨域请求携带的请求头信息。这样设置之后,就可以实现基本的跨域请求了。
二、第三方库
除了使用Header类进行跨域请求的设置之外,还可以使用第三方库来简化这个过程。下面以主流的CORS(Cross-Origin Resource Sharing)库cors拓展为例,来介绍如何使用第三方库实现跨域请求。
安装cors拓展
打开命令行窗口,执行以下命令:
composer require topthink/think-cors
配置cors拓展
在项目的config文件夹下,创建一个cors.php文件,输入以下代码:
<?php return [ // 允许的请求域名 'allow_origin' => ['*'], // 允许的请求头信息 'allow_headers' => 'Origin, X-Requested-With, Content-Type, Accept', // 允许的请求方法 'allow_methods' => 'GET, POST, PUT, DELETE, PATCH', // 是否允许发送cookie 'allow_credentials' => true, // 跨域请求缓存时间 'max_age' => 3600, ];
其中,$allow_origin表示允许的请求域名,可以设置为具体的域名,也可以设置为通配符“*”;$allow_headers表示允许的请求头信息,$allow_methods表示允许的请求方法,$allow_credentials表示是否允许发送cookie,$max_age表示跨域请求缓存时间。
修改配置文件
在项目的config文件夹下,找到app.php文件,配置如下:
return [ // ... 'middleware' => [ // ... \think\middleware\Cors::class, ], ];
调用cors拓展
在需要跨域请求的控制器方法中,可以直接调用cors拓展中的方法,实现跨域请求的设置:
use think\facade\Cors; public function index() { Cors::allowAllOrigin(); return json(['code' => 200, 'msg' => 'success']); }
这样设置之后,就可以实现跨域请求了。
以上是thinkphp如何完成跨域请求的详细内容。更多信息请关注PHP中文网其他相关文章!