我需要使用src属性加载iframe。我需要附加很多附加信息到查询中。目前,我只是将所有这些信息都放在这样的参数中:
<iframe src="mywebsite.com/get_iframe?aVeryLongString"></iframe>
但是,aVeryLongString会变得很长。很久以来,我就从服务器收到“ 414(请求URI太大)”错误。
是否有一种方法可以发出此请求而不会出现此错误?
注意:iframe的url带有其自己的Content-Security-Policy,因此我不能只使用srcdoc而不是src。除非有使用srcdoc的方法来强制CSP?
答案 0 :(得分:4)
如果iframe
包含HTML,我倾向于做Scott marcus mentioned in a comment:做ajax POST并填充div
而不是使用iframe
。
但是,如果由于某种原因您不能这样做(可能有多种原因,您不能这样做,尤其是iframe
是否具有HTML以外的其他内容):
如果aVeryLongString
采用标准URI编码的name1=value1&name2=value2
格式,则可以给iframe
一个name
,然后从JavaScript代码向其发布表单。非常粗略:
<iframe name="the-iframe"></iframe>
<script>
(function() { // Scoping IIFE to avoid creating global vars
var form, input;
form = document.createElement("form");
form.action = "/path/to/the/resource"; // I didn't use your `src` because it's incorrect
form.target = "the-iframe";
for (/*...looping through the fields you need to add...*/) {
input = document.createElement("input");
input.type = "hidden";
input.name = /*...the field name...*/;
input.value = /*...the field value...*/;
form.appendChild(input);
}
document.body.appendChild(form);
form.submit();
})();
</script>
旁注:src="mywebsite.com/get_iframe"
不正确,URL为//mywebsite.com/get_iframe
(协议相对URL),或者,如果从该站点加载页面,则为/get_iframe
或可能为{ {1}}。