Thinkphp跨域报错解决方案
本文最后更新于19 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

在ThinkPHP中处理跨域问题,通常可以通过配置中间件或直接在入口文件中设置响应头来解决。以下是一些可能的解决方案:

1. 使用中间件(Middleware)

ThinkPHP提供了中间件机制,可以在中间件中添加允许跨域的响应头。首先创建一个中间件:

php think make:middleware Cors

然后在 app\middleware.php 中注册这个中间件:

return [
    // ...
    'cors' => app\middleware\Cors::class,
];

接下来在中间件 app\middleware\Cors.php 中添加如下代码:

<?php

namespace app\middleware;

class Cors
{
    public function handle($request, \Closure $next)
    {
        return $next($request)->header('Access-Control-Allow-Origin', '*')
                              ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
                              ->header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
    }
}

这里使用了通配符 * 允许所有来源的请求,实际应用中应根据需要限制特定的域名。

2. 在入口文件中设置

如果你不想使用中间件,也可以直接在入口文件中设置响应头:

// 入口文件 public/index.php

// ...

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, Authorization');

// ...

$response = $http->run();
$response->send();
$http->end($response);

3. 使用插件

还可以使用第三方插件如 overtrue/think-cors 来简化配置过程。安装插件:

composer require overtrue/think-cors

然后配置插件:

// config/cors.php

return [
    'origin'         => '*', // 允许的源
    'allow_methods'  => ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], // 允许的方法
    'allow_headers'  => ['Authorization', 'Content-Type'], // 允许的头
    'expose_headers' => [], // 暴露的头
    'max_age'        => 0, // 预检请求缓存时间
];

并在 config/app.php 中启用插件:

// config/app.php

return [
    // ...
    'middleware' => [
        // ...
        \Overtrue\Laravel\Cors\HandleCors::class,
    ],
];

以上方法可以根据你的具体需求选择使用。记得在生产环境中要限制允许跨域的源,避免使用通配符 *,以增强安全性。

原文标题:Thinkphp跨域报错解决方案
原文地址:https://www.ao14.cn/archives/51
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇