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

8
我使用此 HTML 代码在页面(www.dasinfobuch.de/links/Wizz)被调用时重定向到另一个 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编程的新手。)

2
在纯HTML中不可能实现,但最好使用服务器端编程语言或Apache的Redirect在.htaccess文件中进行30x重定向(如此处所示)。 - Pekka
1
是的,那必须在那个服务器上完成。如果你只能访问页面源代码,你唯一的选择就是使用JavaScript,但这不太可靠(JS可能会被停用或根本不被解析,例如被搜索引擎爬虫等机器人)。 - Pekka
1
您还可以在接收服务器(52.28...)上解析HTTP_REFERER头。这也不是100%可靠的,因为客户端可能会关闭它,但相对来说比较轻松。 - Pekka
1
Referer与JavaScript无关,但是它是另一个HTTP头字段。它是链接到目标资源的地址。请查看request.getHeader("referer") - dakab
显示剩余3条评论
1个回答

10
这是不可能仅使用模拟非标准的刷新 HTTP头字段的元素来实现的。当然还有其他方法。
如果你有类似预处理器的东西,你可以将请求传递给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
1
@lukas.coenig:不用担心,慢慢来。这绝对是一个可以通过多种方法解决的问题。如果仍然无法解决,提供一个实际的(servlet)代码示例可能对所有人都有帮助。 - dakab
第一件事没有起作用。显然我没有可用的预处理器……结果只是:http://52.28.104.181:8080/Wizard/Wizz?template=%3C%%20%20%20%20%20%20%20%20%20%20%20out.print(request.getParameter( - lukas.coenig
如果它是一个servlet,那可能意味着你使用JavaServer Pages,这意味着你的HTML代码可能会被处理,从而允许你在静态HTML内容中使用分隔符(如<%...%>)包含来自请求(如查询字符串)的数据。如上所述,需要更多关于您的部分的信息,例如www.dasinfobuch.de/links/Wizz页面是如何生成和传递的... - dakab

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接