Thinkphp5 跨域再请求问题求助

发布于 2022-09-12 00:40:24 字数 854 浏览 34 评论 0

目前项目用的fastadmin,TP版本为5.0.24.
现在前端请求,遇到了跨域问题,不使用nginx转发,想从服务端代码上解决.
目前问题是前端请求,option请求完后,后续的前端请求不会再触发,网上的解决方法都是使用如下代码:

if ($\_SERVER\['REQUEST\_METHOD'\] \== 'OPTIONS') {  
    header("Access-Control-Max-Age", "1800");  
    header('Content-Type: text/html;charset=utf-8');  
    header('Access-Control-Allow-Origin:\*'); // \*代表允许任何网址请求  
    header('Access-Control-Allow-Methods:\*'); // 允许请求的类型  
    header('Access-Control-Request-Headers:\*'); // 允许请求的类型  
    header('Access-Control-Allow-Credentials: true'); // 设置是否允许发送 cookies  header('Access-Control-Allow-Headers: \*'); // 设置允许自定义请求头的字段  
  exit;  
}

我现在是放到了入口文件那,但是并不能起作用.
有个教程https://blog.csdn.net/marswil... 使用中间件拦截http请求,但是中间件是5.1版本才引入的.大佬们 怎么解决呢?谢谢了

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

携君以终年 2022-09-19 00:40:24

给你一段我的处理方式。

    /**
     * Cors Options 跨域处理
     */
    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');
        }

    }

fastadmin也是TP5,我的也是TP5。把这段代码随便放个位置,在BasicApi的控制器中引入使用即可。需要跨域的接口统一继承BasicApi,更详细的代码逻辑可以看我自己使用的开发框架https://gitee.com/zkii_admin/...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文