gpt4 book ai didi

javascript - 如何阻止 form.submit() 将我重定向到另一个页面?

转载 作者:行者123 更新时间:2023-12-01 01:19:30 24 4
gpt4 key购买 nike

我正在构建一个 Web 应用程序,并且需要向我个人无权访问的服务器发出某种形式的跨域 POST 请求。

我尝试了很多方法来使其与 Ajax 配合使用,但没有成功。我做了一些研究,最终找到了一个解决方案,即使用表单创建一个不可见的 iframe,然后提交该表单以获取我需要的信息。

但是,这个表单是用 javascript 创建的,所以我使用 form.submit() 方法来提交所述表单,这不是简单地给我包含我需要的信息的 JSON 文件,而是将我重定向到实际的表单JSON 文件完全位于不同的页面中。

如何防止这种情况发生?

    var ifr = document.createElement('iframe');
var frm = document.createElement('form');
frm.setAttribute("id", "invis_form");
frm.setAttribute("action", endpoint);
frm.setAttribute("method", "post");

var x = document.createElement("INPUT");
x.setAttribute("type", "text");
x.setAttribute("name", "chave");
x.setAttribute("value", apikey);

var y = document.createElement("INPUT");
y.setAttribute("type", "text");
y.setAttribute("name", "valor");
y.setAttribute("value", "125");

frm.appendChild(x);
frm.appendChild(y);

ifr.appendChild(frm);
document.body.appendChild(ifr);
frm.submit();

我希望得到一些可以在控制台上打印的内容,而不是重定向到包含我需要的信息的 JSON 文件。

最佳答案

提交表单的行为会触发浏览器导航到从 HTTP 请求返回的响应。

阻止它替换当前页面的唯一方法是使用 target 在其他地方(例如在框架或新窗口中)进行导航……但是跨域安全性会阻止您阅读使用 JavaScript 处理数据。

<小时/>

出于同样的原因,您无法使用表单从远程站点读取数据 you can't use Ajax to do it .

浏览器旨在阻止您的 JavaScript 读取其他网站愿意与浏览器所有者共享的数据。

如果数据是公开的(即不需要用户登录、位于同一 LAN 上或类似的情况),则使用服务器端技术来读取它(您可以将其代理到浏览器)。

关于javascript - 如何阻止 form.submit() 将我重定向到另一个页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54364366/

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