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.com
、 example.com
或 http://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 在本地机器上返回 json 字符串,但在弹性 beanstalk 实例上返回整数