我正在尝试使用ajax发布http请求,但是使用modsec_audit从apache服务器获取响应:“POST请求必须具有Content-Length标头。”我不想在modsec_audit中禁用它。
这只发生在firefox中,而不是IE中。此外,我切换到使用POST而不是GET来阻止IE缓存我的结果。
这是我用于请求的代码的简化版本,我没有使用任何javascript框架。
function getMyStuff(){
var SearchString = '';
/* build search string */
...
/* now do request */
var xhr = createXMLHttpRequest();
var RequestString = 'someserverscript.cfm' + SearchString;
xhr.open("POST", RequestString, true);
xhr.onreadystatechange = function(){
processResponse(xhr);
}
xhr.send(null);
}
function processResponse(xhr){
var serverResponse = xhr.responseText;
var container = document.getElementById('myResultsContainer');
if (xhr.readyState == 4){
container.innerHTML = serverResponse;
}
}
function createXMLHttpRequest(){
try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
try { return new XMLHttpRequest(); } catch(e) {}
return null;
}
如何在Firefox中强制或添加ajax类型POST请求的内容长度?
答案 0 :(得分:3)
xhr.setRequestHeader("Content-Length", "0");
将是我最好的猜测。
顺便说一句,如果你想在IE中停止缓存,只需在末尾添加一个随机数,如:
var RequestString = 'someserverscript.cfm' + SearchString + '&random=' + Math.random();
答案 1 :(得分:0)
尝试实际发送一些东西而不是null(xhr.send(null);)。