繁体   English   中英

服务器阻止POST但不阻止GET请求?

[英]Server blocks POST but not GET requests?

在我的应用程序中,我使用$ http post请求,因为在服务器端,所有PHP服务只接受post请求。 PHP网络服务位于godaddy。

经过一些连续的$ http post请求(通常在10-20请求之后),我开始从服务器获取ERR_EMPTY_RESPONSE。 我做了一些研究,发现这是因为服务器出现安全问题以防止攻击。 Apache服务器的mod_sec设置导致此问题,但我没有权限覆盖它。

我决定测试,如果这个问题是由POST请求专门引起的。 所以我写了一个简单的PHP文件和AngularJS测试脚本。 如果我使用GET请求,我不会收到任何ERR_EMPTY_RESPONSE错误。 在客户端AngularJS或任何Apache服务器设置上是否有任何$ http POST设置我可以放在.htaccess文件中,所以服务器不会阻止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);

这是因为跨域请求策略。 如果要限制来自不在同一域中的其他页面的脚本,这将有助于这样做。 但是在API的情况下会发生什么,他们如何允许接受来自其他页面的请求? 为此,他们使用Access-control-OPTIONS,在您的特定情况下,Access-Control-Allow-Methods必须设置为GET方法。 所以它基本上只接受GET请求。

但是,如果您想要专门使用POST请求,请使用CURL(使用PHP或其他服务器端语言),它可以通过同源策略,并可以通过POST请求发送和接收数据。 您可以在此处获得有关CURL的其他信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM