问题描述
我已经使用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”将存储文件链接到公共目录,因为它创建了一个公共文件夹在应用程序根目录中,而不是在公共根目录中。
文档根目录的屏幕截图。
解决方法
在laravel中
如果要使用PATCH
或除GET
和POST
以外的任何其他方法,则应将方法更改为POST
,然后在名称为是_method
,而值就是您想要的值,例如:
$.ajax({
url: your_url,type: 'POST',data: {
_method: 'PATCH'
},success: function (data) {
// success
},error: function () {
// error
}
});
这意味着laravel的PATCH
方法不是POST