2013-03-26 77 views
0

我正在与我的大学的认证系统(Ucam_Webauth),这意味着我必须重定向到其中一种方法的认证服务器的图书馆工作。不幸的是,由于该库的体系结构,我无法返回Redirect:to()。图书馆本身使用header('Location: ...');,但由于某种原因,这不起作用。位置标题在Laravel

如果我在发送它的标头后使程序die();有效,否则它不会。

任何想法如何解决这个问题?

回答

3

我不确定我关注。 Laravel将Location标头设置为Redirect :: to()方法的一部分。如果你想更明确地定义响应,你可以这样做。

return Response::make('', 302)->header('Location', $url); 

如果这不起作用,我可能会回落在php stdlib头()并返回null。

如果所有这些仍然没有任何好处,也许探查器搞砸了。如果它已打开,请尝试在配置中禁用它。

+1

基本上,'header()'不能在不用'die()'终止执行的情况下工作。我通过部分改写图书馆以使用Laravel的方法来修复它。由于调用'header('Location:...');'不起作用,我仍然很想知道是否有办法设置'Location'头,而不必返回'Response'。 – GTF 2013-03-27 22:11:20

0

exit;在标题之后停止进一步的代码执行。

<?php 
header('Location: http://www.example.com/'); 
exit; 
+0

正如我在我原来的问题中所说,这基本上是我在做什么,虽然我不知道为什么返回标题不工作... – GTF 2014-03-18 23:56:09

+1

Downvoting,因为这种方法不是单元测试。您需要使用'Redirect'或'Reponse'外观,以便模拟此重定向,否则在此方法之后的任何测试将永远不会运行,因为您从字面上重定向了您的测试套件。 – 2015-05-29 12:48:24

0

尝试

return Redirect::to('url'); 
0

例如,对于这条路线:

Route::get('hello', array('as' => 'hello_name', 'uses' => '[email protected]')); 

在laravel,您可以重定向到URL简单地使用

return Redirect::to('hello'); 

爱特纳疑心,你可以重定向到一个名为航线简单地使用

return Redirect::route('hello_name'); 
0
return redirect()->to('url')->send(); 

发送HTTP标头和内容。在我的应用程序中,send()方法的作用类似于'exit()'并且是可测试的

+0

尽管这段代码可能有效,但它可以稍微解释一下。 – 2016-11-30 05:40:19