thinkphp如何完成跨域请求

后端开发   发布日期:2025年01月20日   浏览次数:206

这篇“thinkphp如何完成跨域请求”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“thinkphp如何完成跨域请求”文章吧。

一、Header类

在thinkphp框架中,可以使用Header类来对响应头进行设置,从而实现跨域请求的功能。具体的方法是在控制器方法中添加以下代码:

  1. header("Access-Control-Allow-Origin: *");
  2. header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");

其中,第一行代码表示允许所有来源的跨域请求,也可以设置为具体来源;第二行代码表示允许跨域请求携带的请求头信息。这样设置之后,就可以实现基本的跨域请求了。

二、第三方库

除了使用Header类进行跨域请求的设置之外,还可以使用第三方库来简化这个过程。下面以主流的CORS(Cross-Origin Resource Sharing)库cors拓展为例,来介绍如何使用第三方库实现跨域请求。

  1. 安装cors拓展

打开命令行窗口,执行以下命令:

  1. composer require topthink/think-cors
  1. 配置cors拓展

在项目的config文件夹下,创建一个cors.php文件,输入以下代码:

  1. <?php
  2. return [
  3. // 允许的请求域名
  4. 'allow_origin' => ['*'],
  5. // 允许的请求头信息
  6. 'allow_headers' => 'Origin, X-Requested-With, Content-Type, Accept',
  7. // 允许的请求方法
  8. 'allow_methods' => 'GET, POST, PUT, DELETE, PATCH',
  9. // 是否允许发送cookie
  10. 'allow_credentials' => true,
  11. // 跨域请求缓存时间
  12. 'max_age' => 3600,
  13. ];

其中,$allow\_origin表示允许的请求域名,可以设置为具体的域名,也可以设置为通配符“*”;$allow\_headers表示允许的请求头信息,$allow\_methods表示允许的请求方法,$allow\_credentials表示是否允许发送cookie,$max\_age表示跨域请求缓存时间。

  1. 修改配置文件

在项目的config文件夹下,找到app.php文件,配置如下:

  1. return [
  2. // ...
  3. 'middleware' => [
  4. // ...
  5. hinkmiddlewareCors::class,
  6. ],
  7. ];
  1. 调用cors拓展

在需要跨域请求的控制器方法中,可以直接调用cors拓展中的方法,实现跨域请求的设置:

  1. use thinkfacadeCors;
  2. public function index() {
  3. Cors::allowAllOrigin();
  4. return json(['code' => 200, 'msg' => 'success']);
  5. }

这样设置之后,就可以实现跨域请求了。

以上就是thinkphp如何完成跨域请求的详细内容,更多关于thinkphp如何完成跨域请求的资料请关注九品源码其它相关文章!