如何在IOS浏览器中设置网站cookies?

Posted

技术标签:

【中文标题】如何在IOS浏览器中设置网站cookies?【英文标题】:How to set website cookies in IOS browser? 【发布时间】:2014-02-21 16:30:45 【问题描述】:

如果用户未登录,我有一个使用 javascript cookie 进行重定向的网站。但是当您使用 iPad 或 iPhone 访问我的网站时,您将无法进入登录页面,因为 ios 浏览器默认阻止/禁用 cookie .

我搜索了解决方法并找到了这些set Cookie manually using HTTPCookiestorage

Where are an UIWebView's cookies stored?

但首先,我不知道如何使用它。我已经阅读了,但我仍然不清楚如何将 cookie 设置为 IOS 浏览器,以便用户可以查看我的网站。

谁能帮助/指导我如何使用它?我在我的代码上使用 javascript。它只是一个网站而不是应用程序。

非常感谢!

【问题讨论】:

为什么不使用 localStorage 、 sessionStorage 或 webSQL? @cocco 感谢您的回答。我尝试使用本地存储。但我的网站上有 3 个文件夹,其中有 3 个不同的登录名和登录页面。我可以为每个使用 3 个不同的 localStorage 吗? @cocco 这是我使用 localStorage 的代码。我不太了解 webSQL 和 sessionStorage。您能否检查我的代码,如果满足条件,它应该重定向。这没有发生。再次感谢 我看不到代码...但是您可以创建 3 个不同的 localStorage 变量...有时我将 localStorage 与 JSON.parse 和 JSON.stringify 结合使用...所以我的 localstorage 值可以包含对象和数组。反正我看不到你的代码。 index.html <script> localStorage.setItem('count', '1'); localStorage.count = '1'; localStorage.pageLoadCount == 1; if (localStorage.pageLoadCount == 0) location.href="pathhere/loginios.html" localStorage.pageLoadCount = parseInt(localStorage.pageLoadCount) + 1; localStorage.count = localStorage.pageLoadCount; </script> 【参考方案1】:

为每个目录使用本地存储...

这就是我的意思:

var dir1=localStorage['dir1']? // if localstorage for dir1 exists
         JSON.parse(localStorage['dir1']): // use localstorage value else
         count:1,pageLoadCount:1; // set count to 1 and pagecount to 1

if(dir1.pageLoadCount==0)// will never happen :)
 //localStorage['dir1']=whatever set the storage to something before pagechange
 location.href="pathhere/loginios.html";
else
 dir1.pageLoadCount++;
 dir1.count=dir1.pageLoadCount;
 localStorage['dir1']=JSON.stringify(dir1);// set localStorage

然后 dir2 的类似/相同脚本

编辑

var defaultInfo=[
 folder:'folder1',count:1,pageLoadCount:1,
 folder:'folder2',count:1,pageLoadCount:1,
 folder:'folder3',count:1,pageLoadCount:1,
],
data=localStorage['data']?JSON.parse(localStorage['data']):defaultInfo;//load

console.log(data);
//do stuff


localStorage['data']=JSON.stringify(data);//store

演示

http://jsfiddle.net/qcuhD/1/

编辑

登录

localStorage['data']=JSON.stringify(logedIn:1)

登录检查

if(localStorage['data'])
 var data=JSON.parse(localStorage['data']);
 if(data.logedIn==1)
  //OK
 else
  // not logged in
 
else
 // not logged in

【讨论】:

感谢您与我分享。我现在就试试,然后回复你。你能帮我等一下吗?我应该创建['dir1'] 文件夹吗?喜欢['www.mysite.com/folder1'] 你可以但是...使用一个简单的变量名,比如 folder1 我在这行有错误count:1,pageLoadCount:1; var dir1=localStorage['dir1']?JSON.parse(localStorage['dir1'])||count:1,pageLoadCount:1;应该是一行。 var folder1 = "http://example.com/test/"; var dir1=localStorage['folder1']?JSON.parse(localStorage['folder1'])||count:1,pageLoadCou‌​nt:1; if(dir1.pageLoadCount==0) //localStorage['dir1']=whatever???? location.href="http://example.com/test/login.html"; dir1.pageLoadCount++; dir1.count=dir1.pageLoadCount; localStorage['dir1']=JSON.stringify(dir1);

以上是关于如何在IOS浏览器中设置网站cookies?的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Phonegap iOS 的 document.cookie 中设置域?

你如何在 PHP 中设置使用 HttpOnly cookie

如何在 WebView2 中设置基于选项卡的 cookie?

未在 cookie 中设置令牌

在 WebBrowser 控件中设置 cookie

在 iframe 中设置 cookie - 不同的域