当先锋百科网

首页 1 2 3 4 5 6 7

TP5中解决跨域的一种方案

  • 在 application->tags.php 文件中添加如下代码:
'app_init'     => [
        'app\\api\\behavior\\CORS'
    ],

 

  • 新建文件 application->api->behavior->CORS.php

<?php
namespace app\api\behavior;
use think\Response;
 
class CORS
{
    public function appInit(&$params)
    {
        header('Access-Control-Allow-Origin:带协议的域名');
        header("Access-Control-Allow-Credentials: true");
        header("Access-Control-Allow-Headers: token,Origin, X-Requested-With, Content-Type, Accept");
        header('Access-Control-Allow-Methods: POST,GET');
        if (request()->isOptions()) {
            exit();
        }
    }
}

补充:

怎么允许多域名呢

只需要在上面的appInit方法中加入下面的代码即可

$allow_origin = [
   'http://localhost:8081',
   'http://localhost:8080',
];
$origin = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : '';
if(in_array($origin,$allow_origin)){
    header('Access-Control-Allow-Origin:'.$origin);
}

解决方案是次要的,重要的还是要看报错,通过报错去解决