Laravel 5.6 DELETE 和 PUT 403 访问被禁止

Posted

技术标签:

【中文标题】Laravel 5.6 DELETE 和 PUT 403 访问被禁止【英文标题】:Laravel 5.6 DELETE and PUT 403 access forbidden 【发布时间】:2018-11-22 23:11:18 【问题描述】:

Laravel 版本:5.6

php 版本:7.1

我完成了我的项目并在本地进行了测试。但是当我将它上传到共享托管网站时,我收到了两个错误(我不确定它们是否是两个单独的错误):

删除http://SomeAddress/patients/440627036403(禁止)

无法加载http://SomeAddress/patients/440627036:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问 Origin 'http://SomeAddress'。响应的 HTTP 状态代码为 403。

这是我认为已解决的 CORS 问题。我只收到 PUTDELETE 的 CORS 错误(我不知道为什么 POST 和 GET 工作!)。我添加了所需的标题,这个错误消失了。这些是我添加的标题:

return $next($request)
        ->header('Access-Control-Allow-Origin', '*')
        ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE, OPTIONS')
        ->header('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-Requested-With')
        ->header('Access-Control-Allow-Credentials', 'true')
        ->header('Access-Control-Max-Age', '10000');

但现在我得到另一个错误(再次只发生在 PUTDELETE) - (它与 Laravel 或我的共享托管站点或我的后端代码有关吗?) :

禁止

您无权访问此服务器上的 /patients/440627035。

我的 CORS 问题完全解决了吗?如何修复这些错误?

前端(我使用 AngularJS $resource 来发送我的 HTTP 请求):

this.patientRes = function () 
        return $resource(baseURL + 'patients/:id', id: "@id", 
            get: 
                method: 'GET',
                isArray: true,
                headers: 'Content-Type': 'application/json'
            ,
            update: 
                method: 'PUT',
                headers: 'Content-Type': 'application/json'
            ,
            delete: 
                method: 'DELETE',
                headers: 'Content-Type': 'application/json'
            
        )
    ;

更新:

我的文件结构是这样的:

public_html/public/ 和我的文件在这里

我改成:

public_html/ 我的文件现在在这里

现在我收到此错误:

【问题讨论】:

/patients 目录和/或文档 1801207626762049 上的权限设置是什么? 不,它们不是目录。实际上,我怎么说呢,它们只是一个 URL 地址。没有名为患者的文件夹。我的数据在我的数据库中。 也许这个来自 Apache 的“禁止访问”消息的答案会有所帮助? ***.com/a/11289275/3585500 但我无法更改共享主机站点上的 Apache 配置。 请告诉我您的发送请求代码 【参考方案1】:

使用这个包: CORS Middleware for Laravel 5

在上面的链接中也给出了安装步骤。

【讨论】:

以上是关于Laravel 5.6 DELETE 和 PUT 403 访问被禁止的主要内容,如果未能解决你的问题,请参考以下文章

我的一些 Laravel 路由(PUT 和 DELETE)在共享主机上不起作用

PUT & DELETE 请求 - 共享主机上的 Laravel 应用程序

Laravel:Route::resource() GET & POST 工作,但 PUT & DELETE 抛出 MethodNotAllowedHttpException

laravel向我显示此错误此路由不支持POST方法。支持的方法:GET,HEAD,PUT,DELETE

如何使用Storage :: put on laravel上传图像?

如何重定向到Laravel 5.6中的以前的URL并打算使用