DELETE和PUT请求的Mod_security问题?

时间:2013-06-17 18:37:37

标签: web-services api rest http-headers mod-security

enter image description here

大家好,

我构建了一个简单的API,一切都在我的localhost上工作正常。当我把它放在我的服务器上时,当我尝试执行PUT或DELETE请求时,我开始收到此错误。 我查了一下NOYB的东西,我发现我启用了Mod_Security并且这导致了错误。我尝试将其关闭为域,但要么我做错了,要么这不是问题。

我希望你们能在这里快速帮助我,因为这需要在夜晚结束前工作。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

虽然对您的需求来说有点晚了,但这里有一个答案可以帮助您处理其他人。

Fist创建测试解决方案所需的工具,假设使用PHP进行配置:

//server-side script test-put.php
< ?php
parse_str(file_get_contents('php://input'), $vars);
print_r($vars);

//client-side script send-put-req.php
< ?php 
$result = file_get_contents(
   'http://www.testsite.ro/test-put.php', 
    false, 
    stream_context_create(array(
       'http' => array(
       'method' => 'PUT' 
       )
    ))
);

print_r($result);

每次请求来自上面的脚本时,请查看mod_security行的error_log文件(/ usr / local / apache / logs / error_log)。在我的配置中,我不得不更改这个(/usr/local/apache/conf/modsec2.user.conf):

# allow request methods
SecRule REQUEST_METHOD "!^((?:(?:POS|GE|PU)T|OPTIONS|HEAD**|DELETE))$" \
"phase:2,t:none,log,auditlog,status:501,msg:'Method is not allowed by policy', severity:'2',id:'960032',tag:'POLICY/METHOD_NOT_ALLOWED'"