【问题标题】:http get and post are OK but put and delete give error 403 on live serverhttp get 和 post 都可以,但是 put 和 delete 在实时服务器上给出错误 403
【发布时间】:2016-01-29 11:08:11
【问题描述】:

这让我抓狂,不知道在哪里寻找解决方案。

什么情况? 我用一个简单的 CRUD 制作了一个 Angular 应用程序,它可以在我的本地主机上正常工作。 现在我已将应用程序迁移到实时服务器,似乎一切正常。我在我的表中获得了整个项目列表,我可以向其中添加项目。伟大的。 但不幸的是 $http.delete 和 $http.put 操作没有。他们最终出现 403 错误。许多人建议检查权限。但我认为它们设置正确:文件夹有 755,在这些文件夹中所有文件都设置为 644。

令我惊讶的是,本地主机和实时服务器上的应用程序行为显然存在差异。这是为什么呢?

有没有人可以引导我解决这种令人心碎的挫败感?

约瑟夫

【问题讨论】:

  • 在浏览器中检查你的开发者工具并查看控制台和网络选项卡中的错误,我真的不认为是权限问题,更可能是服务器配置
  • 您使用什么服务器端语言?也许它可以帮助你:stackoverflow.com/questions/24193029/…
  • 嗯,你在使用 CORS 吗?如果是,有可能 PUT 和 DELETE 方法在 api 端没有被批准?对于 nodeJS 服务器,您可以像这样设置它们:res.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS, PUT, PATCH, DELETE");
  • @maurycy 控制台 (Chrome) 提供“删除 [url] 403 Forbidden”。网络选项卡显示(红色)状态为 403。我对如何使用这些开发人员工具没有经验。我制作了其他应用程序并以类似的方式将它们发布到此服务器,没有任何问题。
  • @Rafael Zeffa:Het 应用正在通过一个小型 PHP Restful Api (leaseweb.com/labs/2015/02/simple-php-rest-api-script-mysql) 与数据库通信

标签: angularjs http server localhost


【解决方案1】:

您应该将允许从您的(我认为)php 服务器上请求的域列入白名单吗?

这样做是这样的:

<?php header("Access-Control-Allow-Origin: *");

这样您还可以选择允许的方法,例如 GET、POST、PUT、PATCH、DELETE、OPTIONS 等等。

【讨论】:

  • @Shoeb:是的,你是对的,我通过 api.php 从数据库中提取数据我已经放置了这些标题 header("Access-Control-Allow-Origin: * "); header("Access-Control-Allow-Credentials: true"); header("Access-Control-Allow-Methods: DELETE, PUT, GET, POST");在这个 api.php 的顶部,但没有结果。使用 put 或 delete 操作时,它一直显示错误 403。
  • 我读过一些关于 CSRF 或 XSRF (angularjs-best-practices.blogspot.nl/2013/07/…) 的内容,会不会是这个错误与它有关?
  • 我从控制台收到这条消息:“加载资源失败:服务器响应状态为 403(禁止)”
  • 我还是没有找到解决办法。所以我通过使用 $http.post
猜你喜欢
  • 2018-05-23
  • 2017-08-11
  • 1970-01-01
  • 2015-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-26
相关资源
最近更新 更多