Laravel VueJS放置修补和删除请求403,权限被拒绝

问题描述

我已经使用Laravel 7开发了一个管理Web应用程序。我将VueJS用作应用程序的前端。我已经将应用程序托管在自己的VPS中,该VPS运行带有cwp的Cent OS。我在PATCH,PUT或DELETE请求中得到403。 GET和POST都可以正常工作。这是我在chrome开发工具中获得的屏幕截图。我已经生成一个密钥,清除了缓存,配置和路由,但到目前为止没有任何效果。我在公共根目录中有.htaccess文件

403 Error on Put,Patch,and Delete

我的.htaccess

Blockquote 选项-MultiViews-索引

RewriteEngine On

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

RewriteCond %{THE_REQUEST} !(pwa|api) [NC]

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]

# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.PHP [L]

应用程序根目录比公共根目录高一级,位于一个名为system文件夹中。当我使用“ ln -s”创建链接时,我确实遇到了另一个问题,存储文件夹的内容也得到了403。我没有使用“ storage:link”将存储文件链接到公共目录,因为它创建了一个公共文件夹在应用程序根目录中,而不是在公共根目录中。

文档根目录的屏幕截图。

Document Root Screenshot

解决方法

在laravel中

如果要使用PATCH或除GETPOST以外的任何其他方法,则应将方法更改为POST,然后在名称为是_method,而值就是您想要的值,例如:

        $.ajax({
            url: your_url,type: 'POST',data: {
                _method: 'PATCH'
            },success: function (data) {
              // success
            },error: function () {
              // error
            }
        });

这意味着laravel的PATCH方法不是POST