【发布时间】:2016-09-08 02:20:12
【问题描述】:
在我的应用程序中,我使用 $http 发布请求,因为在服务器端,所有 PHP 服务只接受发布请求。 PHP Web 服务位于 godaddy。
在一些连续的 $http post 请求之后(通常在 10-20 请求之后),我开始从服务器获取 ERR_EMPTY_RESPONSE。我做了一些研究,发现这是因为服务器的安全问题,以防止攻击。 Apache 服务器的 mod_sec 设置会导致此问题,但我没有权限覆盖它。
我决定测试一下,这个问题是否是由 POST 请求引起的。所以我写了一个简单的 PHP 文件和 AngularJS 测试脚本。如果我使用 GET 请求,我不会收到任何 ERR_EMPTY_RESPONSE 错误。客户端 AngularJS 上是否有任何 $http POST 设置或我可以放置在 .htaccess 文件中的任何 Apache 服务器设置,因此服务器不会阻止 POST 请求?
PHP 脚本:
<?php
echo json_encode(array("item"=>"dummy test service."));
?>
AngularJS 脚本:
var success_count = 0;
var method = 'GET'; //try 'POST' and you will get ERR_EMPTY_RESPONSE
stop = $interval(function() {
$http({
method : method,
url : 'test.php'
}).then(function successCallback(response) {
console.log(success_count);
success_count++;
}, function errorCallback(response) {
console.log("error after "+success_count+" successful request.");
success_count = 0;
});
}, 200);
【问题讨论】:
-
如果安全 apache 模块处于活动状态,那么您将无能为力。您只能要求主机提供商将限制设置得更高。
-
@CharlotteDunois 甚至没有 .htaccess 文件?
-
是的,我尝试了 mod_sec .htaccess 设置。但由于权限,它在我的情况下不起作用。
标签: javascript php angularjs post get