• 技术文章 >php框架 >ThinkPHP

    一文详解thinkphp6如何通过全局中间件解决跨域问题

    藏色散人藏色散人2021-09-19 16:49:57转载395
    下面thinkphp框架教程栏目将给大家介绍thinkphp6如何通过全局中间件解决跨域问题,希望对需要的朋友有所帮助!

    tp6 通过全局中间件 解决跨域问题

    tp6官网有提供跨域决绝方法,当我直接使用无法用。(可能我用的姿势不对)。

    前端在Hbuildert中发送ajax请求,发生跨域。

    get请求:可以通过后台设置解决。
    'Access-Control-Allow-Origin: *'。
    post请求:会发生OPTIONS请求。在ajax请求中添加一个header头信息。
    header:{
        'Content-Type':'application/x-www-form-urlencoded'
    }

    定义中间件

    <?php
    declare (strict_types = 1);
    
    namespace app\middleware;
    use think\Response;
    
    /**
     * 全局跨域请求处理
     * Class CrossDomain
     * @package app\middleware
     */
    
    class CrossDomain
    {
        public function handle($request, \Closure $next)
        {
            header('Access-Control-Allow-Origin: *');
            header('Access-Control-Max-Age: 1800');
            header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE');
            header('Access-Control-Allow-Headers: Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-CSRF-TOKEN, X-Requested-With, Token');
            if (strtoupper($request->method()) == "OPTIONS") {
                return Response::create()->send();
            }
    
            return $next($request);
        }
    }

    在middleware.php中加入我们定义的中间件

    3b1b887f9844d5cd8b7d740238f8460.png

    然后跨域就好使了!

    以上就是一文详解thinkphp6如何通过全局中间件解决跨域问题的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:segmentfault,如有侵犯,请联系admin@php.cn删除
    专题推荐:php
    上一篇:thinkphp中find和select的区别有哪些 下一篇:手把手教你实现thinkphp ajax无刷新分页
    大前端线上培训班

    相关文章推荐

    • 关于web hooks服务器自动拉取代码php thinkphp6• 详解thinkphp6后台添加google登录验证• ThinkPHP6加载中间件及多应用解析• 解析ThinkPHP6应用程序初始化

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网