thinkphp如何完成跨域請求

一、header類

thinkphp框架中,可以使用Header類來對響應(yīng)頭進(jìn)行設(shè)置,從而實(shí)現(xiàn)跨域請求的功能。具體的方法是在控制器方法中添加以下代碼:

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

其中,第一行代碼表示允許所有來源的跨域請求,也可以設(shè)置為具體來源;第二行代碼表示允許跨域請求攜帶的請求頭信息。這樣設(shè)置之后,就可以實(shí)現(xiàn)基本的跨域請求了。

二、第三方庫

除了使用Header類進(jìn)行跨域請求的設(shè)置之外,還可以使用第三方庫來簡化這個(gè)過程。下面以主流的CORS(Cross-Origin Resource Sharing)庫cors拓展為例,來介紹如何使用第三方庫實(shí)現(xiàn)跨域請求。

立即學(xué)習(xí)PHP免費(fèi)學(xué)習(xí)筆記(深入)”;

  1. 安裝cors拓展

打開命令行窗口,執(zhí)行以下命令:

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

在項(xiàng)目的config文件夾下,創(chuàng)建一個(gè)cors.php文件,輸入以下代碼:

<?php return [     // 允許的請求域名     &#39;allow_origin&#39;      =>?['*'], ????//?允許的請求頭信息 ????'allow_headers'?????=&gt;?'Origin,?X-Requested-With,?Content-Type,?Accept', ????//?允許的請求方法 ????'allow_methods'?????=&gt;?'GET,?POST,?PUT,?DELETE,?PATCH', ????//?是否允許發(fā)送Cookie ????'allow_credentials'?=&gt;?true, ????//?跨域請求緩存時(shí)間 ????'max_age'???????????=&gt;?3600, ];

其中,$allow_origin表示允許的請求域名,可以設(shè)置為具體的域名,也可以設(shè)置為通配符“*”;$allow_headers表示允許的請求頭信息,$allow_methods表示允許的請求方法,$allow_credentials表示是否允許發(fā)送cookie,$max_age表示跨域請求緩存時(shí)間。

  1. 修改配置文件

在項(xiàng)目的config文件夾下,找到app.php文件,配置如下:

return?[ ????//?... ????'middleware'?=&gt;?[ ????????//?... ????????thinkmiddlewareCors::class, ????], ];
  1. 調(diào)用cors拓展

在需要跨域請求的控制器方法中,可以直接調(diào)用cors拓展中的方法,實(shí)現(xiàn)跨域請求的設(shè)置:

use?thinkfacadeCors;  public?function?index()?{ ????Cors::allowAllOrigin(); ????return?json(['code'?=&gt;?200,?'msg'?=&gt;?'success']); }

這樣設(shè)置之后,就可以實(shí)現(xiàn)跨域請求了。

以上就是

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊9 分享