【问题标题】:CSRF Token not work on server, The POST method is not supported for this route. Supported methods: GET, HEAD, PUT, PATCH, DELETECSRF Token 在服务器上不起作用,该路由不支持 POST 方法。支持的方法:GET、HEAD、PUT、PATCH、DELETE
【发布时间】:2021-10-19 15:52:04
【问题描述】:

我已经解决这个错误好几天了,这里是问题

我的项目在 localhost 上正常工作,我刚刚将它上传到服务器并且出现了这个错误! 以下是一些事实:

  • CSRF Token 在 FORM 下可以正常工作,和 localhost 一样没有问题
  • 我尝试了许多解决方案来将 cookie 名称或 SESSION_DOMAIN 更改为 .mydomain.com 如post 所示

我的表单是这样的

<form method="POST" action="{URL SUPPOSED TO BE PATCH}" accept-charset="UTF-8">
 <input name="_method" type="hidden" value="PATCH">
 <input name="_token" type="hidden" value="{Key}">
  ...
</form>

我的 .env 文件

APP_NAME=name
APP_ENV=production
APP_KEY={key}
APP_DEBUG=ture
APP_URL={APP URL}

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE={DB NAME}
DB_USERNAME={USER NAME}
DB_PASSWORD={PASSWORD}

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379


SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_DOMAIN={.mydomain.com}


PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
ACTIVITY_LOGGER_ENABLED = true

我的 Session.php 文件

    'driver' => env('SESSION_DRIVER', 'file'),

    'lifetime' => env('SESSION_LIFETIME', 120),

    'expire_on_close' => false,

    'encrypt' => false,

    'files' => storage_path('framework/sessions'),

    'connection' => env('SESSION_CONNECTION', null),

    'table' => 'sessions',

    'store' => env('SESSION_STORE', null),

    'lottery' => [2, 100],

    'cookie' => 'test',

    'path' => '/',

    'domain' => env('SESSION_DOMAIN', null),

    'secure' => env('SESSION_SECURE_COOKIE', true),

    'http_only' => true,

    'same_site' => null,

ALSO,我有两个项目有相同的错误但版本不同 上面数据的第一个项目是6.20.30版本 第二个是7.28.4

【问题讨论】:

  • laravel 版本??
  • 我在服务器上有两个项目有相同的错误,第一个他的数据上面是版本 6.20.30,第二个是 7.28.4
  • 你运行了 php artisan optimize:clear 吗?错误提示没有路由(这不是csrf错误)
  • 我相信你没有正确传递 csrf 令牌。您应该遵循文档并使用@method('PATCH')@csrf。否则使用 ` ` 另外,正如另一位用户指出的那样,您可能需要清除应用缓存。如有疑问,我会运行以下命令来清除所有内容:php artisan config:clear &amp;&amp; php artisan cache:clear &amp;&amp; composer dump-autoload &amp;&amp; php artisan view:clear &amp;&amp; php artisan route:clear

标签: laravel cpanel


【解决方案1】:

解决了!

整个问题出在请求中的 Content-Length 标头中

如果我超过 - 发生了什么 - 使用 METHOD PATCH 发送请求的正文内容的大小限制,它将以 POST

的形式发送请求

您可以通过 php.ini 在本地的 php 文件夹中更改 content-length 的大小,或者在我的情况下(cpanel)中的 MultiPHP INI 编辑器中通过设置

post_max_size=500m
upload_max_filesize=500m

500m指的是500 Mega(你可以根据需要最小化或最大化)

那么你应该在本地重启你的 apache 服务器 sudo service apache2 restart 或通过服务器中的 WHM 重新启动它-您应该具有 root 访问权限-。

【讨论】:

    猜你喜欢
    • 2020-04-11
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 2021-02-01
    • 2019-10-11
    相关资源
    最近更新 更多