Edd*_*man 2 php laravel laravel-4
我是新手学习laravel并在我的路线文件中有以下内容::
Route::get("/setcookie", function(){
$cookie = Cookie::make("low-carb","almond cookie",30);
return Redirect::to("getcookie")->withCookie($cookie);
});
Route::get("/getcookie", function(){
$cookie = Cookie::get("low-carb");
return View::make("getcookie")->withCookie($cookie);
});
Run Code Online (Sandbox Code Playgroud)
我设置了一个cookie并重定向到另一个页面.我希望能够通过视图页面中的javascript对话框显示cookie."getcookie"视图页面看起来像::
<html>
<body>
this is the cookie page
<script language="javascript">
window.onload = showCookies;
function showCookies(){
alert("Cookie is: " + document.cookie);
}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我在弹出对话框中看到的唯一一件事就是"Cookie is".我期待的价值没有显现出来.
我肯定知道我做错了什么因为当我检查chrome开发工具中的cookie时,我看到"setcookie"路线,REQUEST COOKIE和RESPONSE_COOKIE(laravel_session和low-carb)这两个键都有值但是对于"getcookie" "重定向到的路径,chrome中的REQUEST COOKIE键同时具有"laravel_session和low-carb",但RESPONSE_COOKIE键只有"laravel_session",并且"low-carb"键值丢失.
我究竟做错了什么?
默认情况下,Laravel cookie被标记为httponly - 这意味着它们无法通过JS访问.这通常是你想要的,因此它是默认的.
如果您在这里查看源代码:https://github.com/laravel/framework/blob/master/src/Illuminate/Cookie/CookieJar.php#L41,您将看到方法签名如下所示:
public function make($name, $value, $minutes = 0, $path = null, $domain = null, $secure = false, $httpOnly = true)
Run Code Online (Sandbox Code Playgroud)
传入的最后一个变量是httpOnly变量.
所以,如果你改变:
Cookie::make("low-carb","almond cookie",30);
Run Code Online (Sandbox Code Playgroud)
至
Cookie::make("low-carb","almond cookie",30, null, null, false, false);
Run Code Online (Sandbox Code Playgroud)
然后您的cookie将不会被标记为httponly,并且可以通过JS访问.
您可以使用浏览器开发工具检查cookie是否为httponly,在Chrome的开发工具中转到资源,然后转到Cookie,然后转到oyur域,并且该表中有一个名为HTTP的列 - 它有一个Tick,如果有的话cookies是HTTPonly.
编辑:所有cookie都经过加密并在Laravel中签名,因此用户无法篡改它们.个人不是100% - $ _SESSION用于用户无法编辑的持久数据,$ _COOKIE用于您希望用户能够读取和编辑的数据.无论如何,只需使用PHP的原生:
setcookie("low-carb", "almond cookie", time()+(30*60));
Run Code Online (Sandbox Code Playgroud)
如果你想这样做,而不是laravel方法.
您可能还想考虑是否有一种"更好"的方式来处理这个问题 - 也许您不需要使用Cookie(请记住,它们会随着与cookie的路径,CSS,JS,图像,字体相匹配的每个请求发送 - 一切)
| 归档时间: |
|
| 查看次数: |
2728 次 |
| 最近记录: |