Laravel 在某些机器上返回 302 - 浏览器

Posted

技术标签:

【中文标题】Laravel 在某些机器上返回 302 - 浏览器【英文标题】:Laravel return 302 in some machine - browser 【发布时间】:2016-04-23 18:38:50 【问题描述】:

如果打开此网址,我的应用程序中有一个奇怪的行为

http://example.com/Pd/Country/1

在某些机器和浏览器中,我得到了预期的结果,响应代码是 200 其他机器返回 302

在我的routes

Route::group(array('prefix' => 'Pd'), function() 
   Route::get('Country/id','CountryController@getAll');
);

更新 我发现问题是会话没有在某些机器和浏览器中持续存在,我有一些建议可以在 Session::push('keyvalue',$keyvalue ); 之后添加 Session::save(); 但仍然无法正常工作

【问题讨论】:

查看服务器日志 @ImtiazPabel 感谢您的建议,我发现问题是会话未在某些机器和浏览器中持续存在,我有一些建议可以在 Session::push('keyvalue',$keyvalue ); 之后添加 Session::save(); 但无法正常工作 如果您添加CountryController@getAll 的代码可能会有所帮助,这样我们就可以看到路线之外发生了什么。 @JamesO'Neill 现在问题出在 session 上,在 AuthController 中,我将 session 设置为 Session::push('keyvalue',$keyvalue ); ,如果我尝试将值设为 $keyvalue = Session::get('keyvalue');,它会给出 空 如果'keyvalue' 是为了保存id 路由参数的值,那么您可能应该使用Session::put() 而不是Session::push() 【参考方案1】:

真正的问题

网址不同,即:在example.com 上设置的会话和在未设置会话的http://www.example.com/ 上完成的下一个请求。

解决方案

我必须更改我的 .htaccess 文件,以便将用户类型 www.example.comexample.comhttp://example.com/ 更改为 http://www.example.com/

Options -MultiViews
RewriteEngine On

# remove index.php
RewriteCond %THE_REQUEST /index\.php [NC]
RewriteRule ^(.*?)index\.php$ /$1 [L,R=302,NC,NE]

RewriteCond %HTTPS off
RewriteCond %HTTP_HOST !^www\.example\.com$ [NC]
RewriteRule ^ http://www.example.com%REQUEST_URI [R=301,L,NE]

RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^ index.php [L]

【讨论】:

以上是关于Laravel 在某些机器上返回 302 - 浏览器的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 路由仅在 phpunit 测试期间返回 302 而不是 404 响应

Laravel 5.4 POST 到 API 重定向 302 而不是返回验证错误

在 Laravel POST 请求上重定向 302

laravel 在本地机器上返回 json 字符串,但在弹性 beanstalk 实例上返回整数

某些 Mac 机器浏览器上的 Angularjs CORS 问题

为啥返回后变量提升在某些浏览器上有效,而在某些浏览器上无效?