【发布时间】: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 的“禁止访问”消息的答案会有所帮助? stackoverflow.com/a/11289275/3585500
-
但我无法更改共享主机站点上的 Apache 配置。
-
请告诉我您的发送请求代码
标签: php laravel cors laravel-5.6