我在处理一段 ajax 代码时遇到了麻烦。这是我从 mod security 收到的错误消息:
/ajaxController.php?mod=catalog&op=ajaxSeenProducts HTTP/1.1
Access denied with code 400 (phase 2). Operator EQ matched 0 at REQUEST_HEADERS. [file "/usr/local/apache/conf/modsec2.user.conf"] [line "12"] [id "960012"] [msg "POST request must have a Content-Length header"] [severity "WARNING"] [tag "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);
}
});
});
在寻找解决方案时,我发现在多个地方需要设置
Content-length
参数,但我找到的都是这种格式:
xmlHttp.setRequestHeader("Content-length", params.length);
有没有办法按照我上面提供的代码格式设置请求头?我已经尝试过类似的方法:
标题:{ “内容长度”:params.length }
但没有结果。任何帮助将不胜感激。
最佳答案
使用如下代码:
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){
}
});
关于javascript - 在ajax中设置请求头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16294526/