Php Laravel中的位置标题

Php Laravel中的位置标题,php,redirect,header,location,laravel,Php,Redirect,Header,Location,Laravel,我正在为我大学的身份验证系统(Ucam_Webauth)使用一个库,这意味着我必须用其中一种方法重定向到身份验证服务器。不幸的是,由于此库的体系结构,我无法返回重定向:to()。库本身使用标题('Location:…')但出于某种原因,这不起作用 如果我让程序die()在发送标头后,它可以工作,但在其他情况下则不能 你知道我该怎么解决这个问题吗?我不知道我是否明白。Laravel将位置标头设置为Redirect::to()方法的一部分。如果您想更明确地定义响应,可以这样做 return Resp

我正在为我大学的身份验证系统(Ucam_Webauth)使用一个库,这意味着我必须用其中一种方法重定向到身份验证服务器。不幸的是,由于此库的体系结构,我无法返回
重定向:to()
。库本身使用
标题('Location:…')但出于某种原因,这不起作用

如果我让程序
die()
在发送标头后,它可以工作,但在其他情况下则不能


你知道我该怎么解决这个问题吗?

我不知道我是否明白。Laravel将位置标头设置为Redirect::to()方法的一部分。如果您想更明确地定义响应,可以这样做

return Response::make( '', 302 )->header( 'Location', $url );
如果这不起作用,我可能会返回php stdlib header()并返回null


如果所有这些仍然没有起到任何作用,可能探查器把事情搞砸了。如果它已打开,请尝试在配置中禁用它

退出;在标头之后停止进一步的代码执行

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

return Redirect::to('url');

例如,对于此路线:

Route::get('hello', array('as' => 'hello_name', 'uses' => 'HelloController@getHello'));
在laravel中,只需使用

return Redirect::to('hello');
return Redirect::route('hello_name'); 
或者,您可以使用以下命令重定向到命名路由

return Redirect::to('hello');
return Redirect::route('hello_name'); 

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

基本上
header()
在不使用
die()终止执行的情况下无法工作。我通过部分重写库以使用Laravel的方法修复了它。我仍然想知道是否有一种方法可以设置
位置
标题,而不必返回
响应
,因为调用
标题('Location:…')
不起作用。正如我在最初的问题中所说的,这基本上就是我正在做的,尽管我不确定为什么返回头不起作用……向下投票,因为这个方法不可单元测试。您需要使用
重定向
响应
外观,以便模拟此重定向,否则此方法之后的任何测试将永远不会运行,因为您确实重定向了您的测试套件。虽然此代码可以工作,但最好对其进行一点解释。这非常有效。当您在
vendor/symfony/http foundation/Response.php
中检查
Response::send()
的实现时,Laravel似乎会清除头重定向后可能运行的所有操作。当声明头重定向后出现代码行时,头重定向通常会失败。