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 问题。我只收到 PUT 和 DELETE 的 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');
但现在我得到另一个错误(再次只发生在 PUT 和 DELETE) - (它与 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