无法将大型html内容POST到Chrome上的服务器

Unable to POST large html content to server on Chrome

本文关键字:Chrome 服务器 POST 内容 大型 html      更新时间:2023-09-26

我正试图通过POST请求发送HTML内容,但它无法在服务器端使用Chrome进行传递。当我使用Mozilla时,在jsp中获取请求数据。当HTML内容很小时,这在两种浏览器中都有效。我正在使用ApacheFOP生成一个包含这些HTML内容的PDF。

var iframe = document.createElement('iframe');
iframe.setAttribute('name','eyeframe');
document.body.appendChild(iframe);
var myform = document.createElement('form');
document.body.appendChild(myform);
myform.setAttribute('action','myJspToRenderHtmlAsPdf.jsp');
myform.setAttribute('method','post');
myform.setAttribute('target','eyeframe');
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", "htmlContent");
hiddenField.setAttribute("value", strHTML);
myform.appendChild(hiddenField);
myform.submit();

我将HTML划分为块,并将它们发布并重新加入jsp中。这种方法在chrome和即上也失败了

chrome(或者整个webkit)中的输入有字符限制-524288,您可以通过在控制台中键入来测试它

var el = document.createElement("input");
el.maxLength

为什么不使用简单的FormData?

var formData = new FormData();
formData.append("htmlContent", strHTML);
var request = new XMLHttpRequest();
request.open("POST", "myJspToRenderHtmlAsPdf.jsp");
request.send(formData);

有一些时间来写简单的演示。服务器响应生成PDF:

<a href="#" id="test">Download</a>
<script>
var formData = new FormData();
formData.append("htmlContent", 'test');
var request = new XMLHttpRequest();
request.responseType = 'blob';
request.open("POST", "myJspToRenderHtmlAsPdf.jsp");
request.onload = function(event) {
    if (request.status == 200) {
      var blob = new Blob([request.response], {type: 'application/pdf'});
      var url = URL.createObjectURL(blob);
      var link = document.querySelector('#test');
      link.setAttribute('href', url);
    } else {
      // Handle error
    }
  };
request.send(formData, true);
</script>
相关文章: