我试图在Laravel中使用身体进行重定向。我试过这个:
return Redirect::to($log_in_url)->with('body','<html><head><title>Redirecting to your page</title></head><body>If you are not redirected within 5 seconds, please <a href="'.$log_in_url.'">cl ick here</a>.</body></html>');
我查看网络标签,我什么都看不到。
问题是如何通过在实际重定向发生之前显示HTML等待页面来实现延迟重定向?
答案 0 :(得分:3)
你做了一些错误的假设:
with
方法将事物放入会话中,以便您可以在重定向后访问。常见的用例是设置消息然后重定向用户。 body
,就不要期待魔法。 我认为你在考虑其中一种类似vBulletin的重定向方式。要在Laravel环境中实现它,您需要一个中介视图,在经过一定的延迟后为您进行客户端重定向。我们将其命名为redirect.blade.php
:
<!doctype html>
<html lang="en">
<head>
<title>Redirecting...</title>
<script>
window.setTimeout(function () {
window.location = "{{ $url }}";
}, 5000);
</script>
</head>
<body>
If you are not redirected within 5 seconds,
please <a href="{{ $url }}">click here</a>.
</body>
</html>
有了这个,你的控制器会将$url
传递给这个中介视图并让它呈现以进行客户端重定向:
# Controller method
return view('redirect', ['url' => $log_in_url])
如果禁用JavaScript,这种重定向方式将无法正常工作,这就是为什么他们将链接放入页面内容并向用户发出警告的原因。
有些采取混合方式:
<noscript>
<meta http-equiv="refresh" content="5;url={{ $url }}" />
</noscript>
他们首先不使用刷新标头/元标记的原因是它没有在HTTP标准中指定。 Read more
我强烈建议您研究替代方案。这是1990年,根本不是用户友好的。
作为访问者,如果我处理一个让我等待5戈德姆秒的网站,我就离开了。这就是人们过去常常使用浏览器扩展来解决vBulletin登录屏幕等待时间的原因!
拥抱简单,只需进行常规的HTTP重定向。它对全人类来说都是最好的。
答案 1 :(得分:1)
这不是Laravel的任务。您可以使用meta或使用javascript返回页面。
System.Windows.Forms.dll