ThinkPHP5.0 开发API常见问题之跨域请求

2019年02月13日 632 次阅读 0 条评论 3 人点赞

项目开发遇到前后端分离时跨域请求就会是一个常见问题,TP5.1手册中已经提到跨域请求时的解决方法,在5.0中解决这个问题其实非常简单,这里分享一下利用行为标签位(response_send)来解决这个问题,看代码~~

行为(Behavior)是ThinkPHP扩展机制中比较关键的一项扩展,行为既可以独立调用,也可以绑定到某个标签中进行侦听,在官方提出的CBD模式中行为也占了主要的地位,可见行为在ThinkPHP框架中意义非凡。

response_send 响应发送标签位(V5.0.10+)

跨域请求错误截图:


定义行为:目标 application->api->behavior 下新建 CrossDomain.php 类文件

namespace app\api\behavior;

class CrossDomain
{
    public function responseSend(&$params)
    {
        // 响应头设置 我们就是通过设置header来跨域的 这就主要代码了 定义行为只是为了前台每次请求都能走这段代码
        /*header('Access-Control-Allow-Origin:*');
        header('Access-Control-Allow-Methods:*');
        header('Access-Control-Allow-Headers:*');
        header('Access-Control-Allow-Credentials:false');*/
        header('Access-Control-Allow-Origin: *');
        header('Access-Control-Allow-Headers: Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-Requested-With');
        header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE');
    }
}

下面是重点,我们在application->tags.php 中添加 response_send标签位

//跨域请求
    'response_send' => [
        'app\\api\\behavior\\CrossDomain'
    ],
跨域请求大功告成!!再次请求项目,跨域报错消失!!!

讲梦想、讲奋斗可以,前提是钱要给够。

文章评论(0

接收回复邮件通知
非注册会员初次评论需要审核,审核时间(09:00-18:00),请耐心等待...