目前[Web項目開發(fā)]基本都是前后端分離的架構(gòu),那就避免不了會遇到跨域問題臣疑。在前端請求接口的時候盔憨,接口的協(xié)議、域名讯沈、端口三者之間任意一與當(dāng)前頁面地址不同就會出現(xiàn)跨域郁岩。跨域的時候會兩次請求缺狠,第一次是 option去探測服務(wù)器是否允許跨域问慎,然后才會正式去請求接口。下面介紹兩種tp5允許跨域請求的方法挤茄。
1.在TP5入口文件 index.php 配置如叼。
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization");
header('Access-Control-Allow-Methods: GET, POST, PUT,DELETE,OPTIONS,PATCH');
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
exit;
}
2、通過TP5行為(Behavior)配置全局跨域
a驮樊、在base.php基類添加行為標(biāo)簽位
\think\Hook::listen('cros');
b、定義行為
namespace app\index\behavior;
class Cros{
public function run(&$params){
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization");
header('Access-Control-Allow-Methods: GET, POST, PUT,DELETE,OPTIONS,PATCH');
}
}
c片酝、在目錄下面或者模塊的目錄下面定義tags.php文件來統(tǒng)一定義行為
'cros' => [
'app\\api\\behavior\\Cros'
],