重定向到另一个 URL 时如何传递 URL 参数?

Posted

技术标签:

【中文标题】重定向到另一个 URL 时如何传递 URL 参数?【英文标题】:How to pass URL parameters when redirecting to another URL? 【发布时间】:2015-10-14 17:44:35 【问题描述】:

当页面 (www.dasinfobuch.de/links/Wizz) 被调用时,我正在使用此 html 代码重定向到另一个 URL:

<head>
  <meta http-equiv="refresh" content="0; URL=http://52.28.104.181:8080/Wizard/Wizz">
</head>

但是,当我使用 URL 参数时,例如

www.dasinfobuch.de/links/Wizz?template=test

参数未传递到重定向页面。有没有办法做到这一点(最好是纯 HTML)? (我是 Web 编程新手。)

【问题讨论】:

在纯 HTML 中不可能,但在服务器端使用 30 倍重定向会更好(使用服务器端编程语言或 .htaccess 文件中的 Apache Redirect,如 @987654321 所示@) @Pekka웃 好的,我会调查的,谢谢!但这必须在托管 www.dasinfobuch.de 的服务器上完成,对吗?我认为我在该服务器上没有这种访问权限(servlet 在不同的服务器上运行)。 是的,必须在该服务器上完成。如果您只能访问页面源代码,那么您唯一的选择是使用不太可靠的 javascript(JS 可能会被停用或根本无法解析,例如被搜索引擎爬虫之类的机器人解析)。 您还可以解析接收服务器上的HTTP_REFERER 标头(52.28....之一)。这也不是 100% 可靠的,因为客户可以将其关闭,但相对无痛 referer 与 JavaScript 无关,而是another HTTP header field。它是链接到目标的资源的地址。看看里面request.getHeader("referer") 【参考方案1】:

仅使用模仿non-standard Refresh HTTP header field 的元元素是不可能的。当然还有其他方法。

如果你有类似预处理器的东西,你可以将请求传递给 HTML,如下所示:

<meta http-equiv="refresh"
      content="0; URL=http://52.28.104.181:8080/Wizard/Wizz?template=<%
           out.print(request.getParameter("template")) %>">

另一种(客户端)方式是使用 JavaScript 重定向:

document.location.href = 'http://52.28.104.181:8080/Wizard/Wizz' + document.location.search;

请注意,这将传递整个查询字符串,而不仅仅是 template 参数及其参数。如果这是一个问题,很容易从location.search 中只获取所需的字符串。

【讨论】:

谢谢,我会调查的...正如我所说,我是网络编程的新手,所以可能需要一段时间 :-) (好的,第一个想法应该很容易测试...) @lukas.coenig:别担心,慢慢来。这绝对是一个可以通过多种方法解决的问题。如果它仍然不起作用,提供一个实际的(servlet)代码示例可能对所有人都有帮助。 第一件事没有奏效。显然我没有可用的预处理器......结果只是:52.28.104.181:8080/Wizard/…( 如果它是一个 servlet,这可能意味着您使用 JavaServer Pages,这意味着您的 HTML 代码可能会被处理,这允许您将来自请求的数据(如查询字符串)包含在其他静态文件中HTML 内容,使用分隔符,如 &lt;%…%&gt;。如上所述,您需要提供更多信息,例如www.dasinfobuch.de/links/Wizz 的页面是如何生成和交付的…… 我正在使用 servlet,但没有 JSP - 到目前为止,在目标服务器站点(运行 Tomcat8)上。 www.dasinfobuch.de/links/Wizz 页面是静态的,我可以放任何我想要的东西,而且我只需要它一次(或“有限”次 :-)),但服务器只是一个标准网络托管服务器(由德国 1und1 提供),它不是很灵活。到目前为止,我已经在 Tomcat 上完成了所有的编程,没有在客户端或其他服务器上完成。

以上是关于重定向到另一个 URL 时如何传递 URL 参数?的主要内容,如果未能解决你的问题,请参考以下文章

如果发生重定向,如何在 file_get_contents 之后获取真实的 URL?

如何在另一个页面上重定向并从表中传递 url 中的参数?

单击时,如果服务器速度慢,则重定向到另一个 URL?

如何 301 将一个静态 url 重定向到另一个静态 url?

如何将动态生成的URL重定向到另一个选项卡?

ASP.NET MVC我想重定向到另一个将我的模型传递给它的动作,以获得正确的URL