HTML5 localStorage&同源政策:有时它起作用,有时它不起作用

时间:2013-04-25 03:08:03

标签: php javascript html local-storage

我有一个托管一些.html文件的服务器(实际上都是.php,但客户端只看到html)。当用户输入page1.html时,会有一个按钮转到page2.html。此按钮具有href =“page2.html”和rel =“external”。其他4页也是如此。

我的localStorage保留在第1,2和3页之间,但不在第4页和第5页之间。另外,如果在页面内打开一个弹出窗口(我使用jquery mobile的弹出窗口),弹出窗口打开时运行的任何javascript我总是得到unfined localstorage条目的值。谷歌浏览器的元素检查器 - >资源在弹出窗口打开时显示值,但是javascript警报未定义。

那么:是什么导致这种情况?我很适用“same origin policy”(全部以http://www.example.com/开头),但必须导致其他页面没有localStorage。

这是我的大部分页面开头的PHP代码:

<?php
$userid = mysqli_real_escape_string($connection, $_GET['userid']);
echo "<script>localStorage.userid = $userid;</script>";

$keyword = mysqli_real_escape_string($connection, $_GET['keyword']);
echo "<script>localStorage.keyword = $keyword;</script>";
?>

然后我还设置了下一页的href的按钮,以包含相同的php查询字符串,以便下一页获得相同的变量。当然,如果localStorage正常工作并且我可以从他们那里获取值(并在以后对它们执行某些操作),则不需要这样做。我使用谷歌浏览器的元素检查器来查看每个页面在本地存储中的含义。

1 个答案:

答案 0 :(得分:2)

我误用了phph和localStorage的组合。我有时输入以下内容(省略php echo):

localStorage.keyword = $ keyword;

但它应该在引号中:

localStorage.keyword ='$ keyword';

因此,这解释了一些只有未定义条目的页面中的随机行为。