解决浏览器导出Excel出现400的异常!
400 出现的 分析原因:
解决方案一:使用post进行提交表单
一般情况下,我们通过ajax获取数据都是采用get方式获取,但如果ajax的请求url过长时,get方式由于浏览器对url长度不同会导致无法正常获取数据,尤其是IE。
这时候,我们需要通过post请求的方式获取数据,而如果我们需要通过post方式导出Excel表格,则需要通过表单提交的方式导出Excel。
function postExcelFile(params, url) { //params是post请求需要的参数,url是请求url地址
var form = document.createElement("form");
form.style.display = 'none';
form.action = url;
form.method = "post";
document.body.appendChild(form);
for(var key in params){
var input = document.createElement("input");
input.type = "hidden";
input.name = key;
input.value = params[key];
form.appendChild(input);
}
form.submit();
form.remove();
}
//点击导出按钮导出excel表格
function openOutExcel(){
//传递给后台的参数
var rNO = $("#s_rno").val();
var rNA = $("#s_rna").val();
var params = {"rNO":rNO,"rNA":rNA};
postExcelFile(params, "http://www.xxx.outExcel.action");
}
解决方案二:
原因是Tomcat的header缓冲区大小不够,只需要在server.xml中增加maxHttpHeaderSize字段即可:
<Connector connectionTimeout="20000" maxHttpHeaderSize="8999" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
参考文章: https://blog.****.net/qq_33036599/article/details/80844430