gpt4 book ai didi

javascript - 页面加载时 iFrame 中的 XMLHttpRequest POST

转载 作者:太空狗 更新时间:2023-10-29 15:53:18 25 4
gpt4 key购买 nike

所以我想在页面加载时通过 iFrame 发送 XMLHttpRequest POST 请求。通过 iFrame 发帖的原因是不显示推荐人。

Javascript:

function load() {
var http = new XMLHttpRequest();
var url = "action url here";
var params = "name1=one&name2=two";
http.open("POST", url, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
http.send(params);
}

HTML:

<body onload="load();">
<iframe name="f1" src="about:blank" id="noreferer" width="0px" height="0px" style="border: 0px none;"> </iframe>
</body>

如何将请求附加到 iFrame。任何帮助,将不胜感激。



更新:

如果有人问我为什么要在 HTML 正文中添加和触发 load();,下面是一个通过 innerHTML 连接到 f1 iframe 的无引用发布请求代码适用于所有浏览器,因为 src 是“大约空白”。但不是 XMLHttpRequest 并且不提供添加 header 的能力。

Javascript:

function load() {
var postdata = '<form id=NoReferrerPost method=POST action=\'action url here\'>' +
'<input type=hidden name=name1 value=one />' +
'<input type=hidden name=name2 value=two />' +
'</form>';
top.frames['f1'].document.body.innerHTML=postdata;
top.frames['f1'].document.getElementById('NoReferrerPost').submit();
}

所以仍然需要一种方法来附加 XMLHttpRequest 以在 iframe f1 中发布,就像我上面的代码一样。


这里有一些部分有效的解决方案:

@fedeghe的解决方案HERE使用带有无引用元标记的 src="data:text/html,可以在 some browsers 上工作。

最佳答案

如果您只是不想发送referer,那么您可以使用referrer-policy 来提及它。 .在您网页的 html 中,只需添加元信息 ( source ):

<meta name="referrer" content="no-referrer" />

只需创建所需的 html 并在本地提供并在您的机器上进行测试。

$ cat untitled.html
<!DOCTYPE html>
<head>
<meta name="referrer" content="no-referrer" />
</head>
<body>
<p> SOME CONTENT </p>
<script>
(function(){
var http = new XMLHttpRequest();
var url = "https://demo6945017.mockable.io/random/post"
http.open("POST", url, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
http.send();
})();
</script>
</body>

$ python -m http.server

在测试时,您可以看到带有和不带有 referrer-policy 的请求 header 。

(Without the meta info -> With referrer)

POST /random/post HTTP/1.1
Host: demo6945017.mockable.io
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:61.0) Gecko/20100101 Firefox/61.0
Referer: http://localhost:8000/untitled.html
Content-type: application/x-www-form-urlencoded; charset=UTF-8
Origin: http://localhost:8000

===================================

(With the meta info -> Without referrer)

POST /random/post HTTP/1.1
Host: demo6945017.mockable.io
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:61.0) Gecko/20100101 Firefox/61.0
Content-type: application/x-www-form-urlencoded; charset=UTF-8
Origin: http://localhost:8000

(我已经删除了很多常见的 header ,例如 content-lengthcache-control 以实现可重复性)
但请注意,源仍然在每个请求上发送并且无法更改,它与浏览器的行为相关。浏览器支持也仅限于 Chrome 和 Firefox。

关于javascript - 页面加载时 iFrame 中的 XMLHttpRequest POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47413950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com