javascript 如何将数据发送到另一个页面而不附加到URL中?

jgwigjjp  于 2023-02-15  发布在  Java
关注(0)|答案(2)|浏览(141)

我有一个场景,当用户点击一个链接时,他们被定向到一个页面,我想在其中添加一个代码来获取变量并重定向到另一个页面。
即用户点击<a href="sample.tpl">click here</a>
在sample.tpl上我想写一段代码把他重定向到另一个页面

<script>
window.location="http://example.com/?page_id=10"

但出于安全原因,我想在此新链接上也发送一个变量,而不将其附加到URL。

我怎么能用安全的程序来做呢?
不清楚的话一定要问我。

33qvvth1

33qvvth11#

您可以使用method="post"创建一个表单,一个hidden输入(包含要传递的值)和一个submit按钮(样式为常规链接)(如果您还想手动发送表单)。
然后,只需手动提交表单或通过submit()方法以编程方式提交表单
示例(页面加载3秒后自动重定向)http://jsbin.com/avacoj/1/edit
超文本标记语言

<form method="post" action="http://mydomain.com/" id="f">
   <input type="hidden" name="page_id" value="10">
   <noscript><button type="submit">Continue</button></noscript> /* see below */
</form>

日本

window.onload = function() {
  var frm = document.getElementById('f');
  setTimeout(function() {
      frm.submit();
  }, 3000);
};

作为旁注,您可以考虑在<noscript></noscript>标签中插入一个submit按钮,这样即使用户设备上没有js,也可以进行重定向,因此页面仍然可以访问。

hujrc8aj

hujrc8aj2#

对于Fabrizio的回答,有人编写了一个javascript函数,允许您构建表单并在运行时通过POST发送。
POST类似于GET(变量被附加到url),除了变量是通过头发送的。仍然有可能伪造一个POST请求,因此您必须对数据执行某种验证。

function post_to_url(path, params, method) {
    method = method || "post"; // Set method to post by default, if not specified.

    // The rest of this code assumes you are not using a library.
    // It can be made less wordy if you use one.
    var form = document.createElement("form");
    form.setAttribute("method", method);
    form.setAttribute("action", path);

    for(var key in params) {
        if(params.hasOwnProperty(key)) {
            var hiddenField = document.createElement("input");
            hiddenField.setAttribute("type", "hidden");
            hiddenField.setAttribute("name", key);
            hiddenField.setAttribute("value", params[key]);

            form.appendChild(hiddenField);
         }
    }

    document.body.appendChild(form);
    form.submit();
}

这样使用:

post_to_url("http://mydomain.com/", {'page_id':'10'}, "post");

**源代码:**类似于表单提交的JavaScript发布请求

相关问题