隐藏URL传递的变量(hide variables passed in URL)

2019-07-04 08:25发布

我们一直致力于在Web应用程序,我们已经差不多了它完成了,但有一件事困扰着我们(但绝非是要停止生产。)

当我们调用页面(的index.html)中的一个,我们有时必须通过它的URL(searchid)的变量。 因此,我们得到这样一个页面http://domain.com/index.html?searchid=string

我们会非常愿意不显示?searchid=string ,但我不知道怎么会做到这一点。

我的小组没有自己的index.html页面(但我们正在与不团工作),所以我不知道我们多么希望能与喜欢什么做.htaccess或相似。

我在想POST荷兰国际集团的变量,但我不知道如何与刚HTML和jQuery接受它。 另一个人在我的组认为加载页面后,我们可以从URL中删除它,但我认为,我们需要刷新页面然后会丢失数据反正。

我试图避免XY问题,问题出在哪里是X,我问Y,有啥删除URL变量的正确方法?

Answer 1:

你的问题似乎表明,目标页面也不会被一些服务器端脚本来供电。 如果是这样的话,我会建议改变查询字符串的哈希值,其中有被而不触发页面加载直接编辑的优势:

http://yourdomain.com/page.html#search=value

<script type='text/javascript'>
  // grab the raw "querystring"
  var query = document.location.hash.substring(1);

  // immediately change the hash
  document.location.hash = '';

  // parse it in some reasonable manner ... 
  var params = {};
  var parts = query.split(/&/);
  for (var i in parts) {
    var t = part[i].split(/=/);
    params[decodeURIComponent(t[0])] = decodeURIComponent(t[1]);
  }

  // and do whatever you need to with the parsed params
  doSearch(params.search);
</script>

虽然,这将是更好地得到这里所涉及的一些服务器端脚本。



Answer 2:

您可以使用历史API,但它确实需要一个现代浏览器

history.replaceState({}, null, "/index.html");

这将导致您的网址显示为/index.html无需重新加载页面

点击此处了解详情:

操纵浏览器历史记录



Answer 3:

这有可能改写使用JavaScript的历史API的URL。 History.js的是,这是否很好的库。

话虽这么说,我不认为有任何需要从URL中移除查询字符串,除非你是动态改变页面的内容,以目前的查询字符串无关。



Answer 4:

你可以发布数据,然后让服务器在页面中包含,例如发布的数据:

echo "<script> post_data = ".json_encode($_POST)." </script>";

这工作跨浏览器。



文章来源: hide variables passed in URL