![](/img/trans.png)
[英]VueJS 2 Cli converting POST to GET requests using Dev Server
[英]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.