如何使用iframe实现跨域写入cookie 并且兼容大部分浏览器

如何使用iframe实现跨域写入cookie 并且兼容大部分浏览器,第1张

请首先修改hosts文件来模拟本机跨域

127001 localhost

127001 bcom

127001 acom

我们的目的:

由acom登录,如果登录成功,就生成acom的cookie。而对于bcom则无需再次登录。

遇到的困难:

浏览器同源策略限制,即A站点页面的脚本是无法直接 *** 纵B站点的内容。

试想如果所有第三方网站都可以对taobaocom的首页任意篡改,那这个社会还有什么安全性可言呢?

其实浏览器的安全策略逻辑很简单,就是我的地盘我做主,出了我的地盘我做不了主。

解决方案:

acom根据用户输入 *** 作acom的cookie,bcom根据用户在acom得到的输入数据来 *** 作bcom的cookie。

如何在acom用户输入acom的用户数据时同时提交到bcom的验证页面呢?

这时候iframe就派上用场了。

相关代码:

<form method="post" action="<php print $b>setcookiephp" target="ifrm" ><fieldset>

<legend>跨域获取cookie</legend>

<b>用户名</b>

<p>

<input type="text" id ="username" name="username"/>

</p>

<p><button onclick="login()" type="submit">Login</button></p>

</fieldset>

</form>

<iframe id ="ifrm" name="ifrm" style="display:none;" src="<php print $b>setcookiephp" />

请注意form表单的相关属性,bcom/setcookiephp页面就是验证acom用户的输入然后生成bcom的cookie,这样后续访问bcom无需再次输入用户名和密码。

缺点:

需要先设置跨域站点的cookie然后再来设置本域的cookie;

如果跨域站点请求耗时较长,直接影响本域的 *** 作时间;

另外也需要额外的代码来处理跨域站点请求失败后的 *** 作

IE中需要设置接受cookie(隐私),这一点比较不方便。

附件:/Files/1000/xdmrar

测试方法:

1)按文章开头修改hosts文件

2)登录acom/defaultphp

3)输入表单数据

4)点击acom/defaultphp下面的链接就可以在bcom/getcookiephp看到bcom的cookie

单点登录认证,在系统配置单点登录拦截器,拦截所有请求。在浏览器中输入系统url,因为设置了所有请求拦截,所有请求都进入这个拦截器中。自定义一个cookie名称,比如为ssoxbcom, 第一次访问时servletRequest里无cookies,这时会网址重定向到设置的单点登录页面,进行单点认证登录。登录完成后跳转至当前系统,这时浏览器含有一个ssoxbcom的cookie。如果是前后端一体的项目,满足>

在Cookie规范上说,一个cookie只能用于一个域名,不能够发给其它的域名。因此,如果在浏览器中对一个域名设置了一个cookie,这个cookie对于其它的域名将无效。如果你想让你的用户从你的站点中的其中一个进行登录,同时也可以在其它域名上进行登录,这可真是一个大难题。这就是跨域问题。

登陆后登陆信息保存入cookie,同时服务器中用户设置成登陆状态 跨域后,访问cookie是否存在。如果存在,与数据库中登陆状态比对,如果是登陆状态。直接可以访问页面,如果是退出状态。跳转到登陆页面 所有页面关闭时,都要重置登陆状态为退出

以上就是关于如何使用iframe实现跨域写入cookie 并且兼容大部分浏览器全部的内容,包括:如何使用iframe实现跨域写入cookie 并且兼容大部分浏览器、单点登录认证原理及跨域cookie共享、什么是cookie跨域问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9426330.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存