小编Ell*_*ith的帖子

iOS Safari问题中的持久本地存储

我目前正在开发一个Web应用程序,它位于iframe中以用于安全目的(保护用户数据)并托管在其他网站上.为了保持不安全数据的会话状态,我们将一些数据写入本地存储以获取用户功能,即记住用户的背景颜色,我们将"backgroundColour"保存为"红色".

但是我在iOS Safari上遇到了以下两个问题,目前可用于MacOS Safari和Chrome以及Internet Explorer 11.

问题1:当我强制退出iOS时,不保留本地存储

  1. 用户导航到主机网站,www.host.com该网站从不同的域加载我的iframe内容,www.example.com
  2. 然后,用户与iframe交互并保存我保存到本地存储的背景颜色首选项.
  3. 然后用户强制退出Safari或导航,然后强制退出Safari.
  4. 导航回主机网站

预期的行为:localStorage包含backgroundColour属性

实际行为:本地存储空

问题2:在不同站点上使用iframe内容不使用本地存储

  1. 用户导航到主机网站,www.host.com该网站从不同的域加载我的iframe内容,www.example.com
  2. 然后,用户与iframe交互并保存我保存到本地存储的背景颜色首选项.
  3. 用户导航到www.awesomesite.com,它在步骤1中也有来自域的iframe内容, www.example.com

预期行为:本地存储在不同站点之间保留,因为存储是针对iframe的DNS的

实际行为:本地存储空

有谁之前经历过这个吗?是否有人找到的解决方法?这是iOS Safari中的错误吗?我做错了什么吗?

干杯

javascript safari iframe local-storage ios

7
推荐指数
1
解决办法
3274
查看次数

Haskell - 无法将类型`[Char]'与`Char'匹配

我目前在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代码库的其余部分,这就是为什么我认为我的代码可能有问题...

haskell

4
推荐指数
1
解决办法
180
查看次数

标签 统计

haskell ×1

iframe ×1

ios ×1

javascript ×1

local-storage ×1

safari ×1