我遇到了一段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 }
但没有结果。任何帮助将不胜感激。
答案 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);
}
});
});