我目前正在开发一个Web应用程序,它位于iframe中以用于安全目的(保护用户数据)并托管在其他网站上.为了保持不安全数据的会话状态,我们将一些数据写入本地存储以获取用户功能,即记住用户的背景颜色,我们将"backgroundColour"保存为"红色".
但是我在iOS Safari上遇到了以下两个问题,目前可用于MacOS Safari和Chrome以及Internet Explorer 11.
问题1:当我强制退出iOS时,不保留本地存储
www.host.com该网站从不同的域加载我的iframe内容,www.example.com预期的行为:localStorage包含backgroundColour属性
实际行为:本地存储空
问题2:在不同站点上使用iframe内容不使用本地存储
www.host.com该网站从不同的域加载我的iframe内容,www.example.comwww.example.com预期行为:本地存储在不同站点之间保留,因为存储是针对iframe的DNS的
实际行为:本地存储空
有谁之前经历过这个吗?是否有人找到的解决方法?这是iOS Safari中的错误吗?我做错了什么吗?
干杯
我目前在Haskell中有以下代码
splitStringOnDelimeter :: String -> Char -> [String]
splitStringOnDelimeter "" delimeter = return [""]
splitStringOnDelimeter string delimeter = do
let split = splitStringOnDelimeter (tail string) delimeter
if head string == delimeter
then return ([""] ++ split)
else return ( [( [(head string)] ++ (head split) )] ++ (tail split))
Run Code Online (Sandbox Code Playgroud)
如果我运行它在Haskell的终端(即https://www.tryhaskell.org与如return语句值)( [( [(head "ZZZZ")] ++ (head ["first", "second", "third"]) )] ++ (tail ["first", "second", "third"]))或[""] ++ ["first", "second", "third"]或[""]后来我从哪个是我的本地栈编译器是不同的终端接收到正确的类型.此外,如果我也将顶部return语句更改为return ""then那么它不会抱怨我非常确定不正确的语句.
我的本地编译器可以正常使用我的Haskell代码库的其余部分,这就是为什么我认为我的代码可能有问题...