TP5 跨域请求处理

本文介绍了一种在ThinkPHP 5框架中实现跨域请求的方法。通过创建一个工具类并定义corsOptionsHandler方法来处理跨域请求头,使得前端可以顺利地与后端进行跨域通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TP5 跨域

关于TP5 跨域 , 官方的添加钩子的方法我是没有用明白 , 用其他方式实现了一下
在extend/service下面编辑一个工具类: ToolsService 写下一个 corsOptionsHandler 方法在你的BaseController中引入执行就OK了

<?php
// 系统工具服务
namespace service;
class ToolsService {
    public static function corsOptionsHandler() {
            if (request()->isOptions()) {
                header('Access-Control-Allow-Origin:*');
                header('Access-Control-Allow-Headers:Accept,Referer,Host,Keep-Alive,User-Agent,X-Requested-With,Cache-Control,Content-Type,Cookie,token');
                header('Access-Control-Allow-Credentials:true');
                header('Access-Control-Allow-Methods:GET,POST,OPTIONS');
                header('Access-Control-Max-Age:1728000');
                header('Content-Type:text/plain charset=UTF-8');
                header('Content-Length: 0', true);
                header('status: 204');
                header('HTTP/1.0 204 No Content');
            }else{
                header('Access-Control-Allow-Origin:*');
                header('Access-Control-Allow-Headers:Accept,Referer,Host,Keep-Alive,User-Agent,X-Requested-With,Cache-Control,Content-Type,Cookie,token');
                header('Access-Control-Allow-Credentials:true');
                header('Access-Control-Allow-Methods:GET,POST,OPTIONS');
            }
        }
}

BaseController

<?php
namespace app\common\controller;
use think\Controller;
use service\ToolsService;
class BaseController extends Controller
{
    /**
    * 基础接口
    * @param Request|null $request
    */
    public function __construct(Request $request = null) {
            // CORS 跨域 Options 检测响应
            ToolsService::corsOptionsHandler();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值