1

我在处理一段 ajax 代码时遇到了麻烦。这是我从 mod security 收到的错误消息:

/ajaxController.php?mod=catalog&op=ajaxSeenProducts HTTP/1.1

使用代码 400(第 2 阶段)拒绝访问。运算符 EQ 在 REQUEST_HEADERS 匹配 0。[file "/usr/local/apache/conf/modsec2.user.conf"] [line "12"] [id "960012"] [msg "POST request must have a Content-Length header"] [severity "WARNING" ] [标签“PROTOCOL_VIOLATION/EVASION”]

我正在处理的网上商店中有一个模块,它显示了最后查看的产品,我拥有的 jquery 代码是这样的:

$('#seen_products_box').ready(function() {
   $.ajax({  
      type: "POST",
      url: "{HOME}ajaxController.php?mod=catalog&op=ajaxSeenProducts",
      success: function(seenProducts) {
          $('#seen_products_box').empty();
          $('#seen_products_box').append(seenProducts);
      }
   });
});

在寻找解决方案时,我发现在不同的地方我需要设置

内容长度

参数,但我发现的都是这种格式:

xmlHttp.setRequestHeader("Content-length", params.length);

有没有办法以我上面提供的代码格式设置请求标头?我已经尝试过类似的东西:

标头:{“内容长度”:params.length }

但没有结果。任何帮助,将不胜感激。

4

2 回答 2

0

使用如下代码:

                var url = '{HOME}ajaxController.php?';
                var data = "mod=catalog&op=ajaxSeenProducts";
                $.ajax({
                    url: url,
                    data: data,
                    dataType: "html",
                    type:'post',
                    success:function(seenProducts){
                        $('#seen_products_box').empty();
                        $('#seen_products_box').append(seenProducts);
                    },
                    error:function(response){

                    }
                });
于 2013-04-30T07:38:02.167 回答
0

您可以使用该beforeSend功能来设置headers

$('#seen_products_box').ready(function() {
$.ajax({  
  type: "POST",
beforeSend: function (request)
{
            request.setRequestHeader("Authority", authorizationToken);
},
  url: "{HOME}ajaxController.php?mod=catalog&op=ajaxSeenProducts",
  success: function(seenProducts) {
      $('#seen_products_box').empty();
      $('#seen_products_box').append(seenProducts);
   }
 });
});

或其他方式你可以这样做

$('#seen_products_box').ready(function() {
$.ajax({  
  type: "POST",
 headers: {"X-Test-Header": "test-value"},
  url: "{HOME}ajaxController.php?mod=catalog&op=ajaxSeenProducts",
  success: function(seenProducts) {
      $('#seen_products_box').empty();
      $('#seen_products_box').append(seenProducts);
   }
 });
});
于 2013-04-30T07:38:22.633 回答