thinkphp6自带的跨域中间件AllowCrossDomain如何配置生效

背景

thinkphp官方自带的AllowCrossDomain自称是跨域请求支持,但配置生效后发现并不是通俗的Access-Control-Allow-Origin: *响应头。

解决

查看代码得知thinkphp调度管道时对handle的第三个及以上的传参是可控的

如何配置传参:

<?php
// config/middleware.php
return [
    [\think\middleware\AllowCrossDomain::class, [
        ['Access-Control-Allow-Origin' => '*']
    ]]
];

另一种跨域配置:


<?php
// config/cookie.php
// 同样是利用自带的跨域请求支持中间件
return [
    // cookie 保存时间
    'expire'    => 0,
    // cookie 保存路径
    'path'      => '/',
    // cookie 有效域名  这里填入前端部署的域名即可
    'domain'    => '',
    //  cookie 启用安全传输
    'secure'    => false,
    // httponly设置
    'httponly'  => false,
    // 是否使用 setcookie
    'setcookie' => true,
    // samesite 设置,支持 'strict' 'lax'
    'samesite'  => '',
];

thinkphp6自带的跨域中间件AllowCrossDomain如何配置生效
http://blog.icy8.cn/posts/37831/
作者
icy8
发布于
2021年5月27日
许可协议