在ajax中设置请求标头

时间:2013-04-30 07:31:38

标签: javascript ajax jquery http-headers

我遇到了一段ajax代码问题。这是我从mod security获得的错误信息:

  

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

     

使用代码400拒绝访问(阶段2)。运营商EQ匹配0 at   REQUEST_HEADERS。 [file“/usr/local/apache/conf/modsec2.user.conf”]   [line“12”] [id“960012”] [msg“POST请求必须有   Content-Length标题“] [严重性”警告“] [标记   “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     }

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

2 个答案:

答案 0 :(得分: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){

                    }
                });

答案 1 :(得分: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);
   }
 });
});