iframe跨域无法携带cookie(前端iframe跨域)

http://www.itjxue.com  2023-01-27 13:56  来源:未知  点击次数: 

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

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

127.0.0.1 localhost

127.0.0.1 b.com

127.0.0.1 a.com

我们的目的:

由a.com登录,如果登录成功,就生成a.com的cookie。而对于b.com则无需再次登录。

遇到的困难:

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

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

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

解决方案:

a.com根据用户输入操作a.com的cookie,b.com根据用户在a.com得到的输入数据来操作b.com的cookie。

如何在a.com用户输入a.com的用户数据时同时提交到b.com的验证页面呢?

这时候iframe就派上用场了。

相关代码:

form method="post" action="?php print $b?setcookie.php" target="ifrm" fieldset

legend跨域获取cookie/legend

b用户名/b

p

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

/p

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

/fieldset

/form

...

iframe id ="ifrm" name="ifrm" style="display:none;" src="?php print $b?setcookie.php" /

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

缺点:

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

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

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

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

附件:/Files/1000/xdm.rar

测试方法:

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

2)登录a.com/default.php

3)输入表单数据

4)点击a.com/default.php下面的链接就可以在b.com/getcookie.php看到b.com的cookie

Iframe下面怎么怎么跨域实现共享cookie,P3P的方法我试了为什么不行?,那位朋友能给具体的说下,谢谢!

这个是先执行外循环 a=1 for ( a=1 ; a= 6 ; a++) ,然后执行内循环 b=1 for ( b=1 ; b= 14-2*a ; b++) b= 14-2*1(12)成立,b++ 输出 再执行b=2 b= 14-2*2(10)成立 b++ 输出 ; 一直到执行完b=8 不成立后跳出循环。接着执行外循环a=2,然后是内循环for ( b=1 ; b= 14-2*a ; b++) b=1 b= 14-2*1(12)成立,b++ 输出 再执行b=2 b= 14-2*2(10)成立 b++ 输出 ; 一直到执行完b=8 不成立后跳出循环。一次类推到a=6之后外循环也结束。

Set-Cookie后,Cookie丢失问题解决(跨域)

iframe跨域访问,服务端设置免登cookie( response.addHeader("Set-Cookie",".....") )后,有的访问能携带免登cookie;有的免登cookie丢失,登录失败。

对某些UA( request.getHeader("user-agent") ),不设置 SameSite

2021-07-21 前端跨域携带cookie问题

Access-Control-Allow-Origin为*的时候,前端设置withCredentials:true,将不能发送cookie到服务端。

此外,前端要发送cookie到服务端,还要 XMLHttpRequest 的 withCredentials 标志设置为 true,且

服务器端的响应中未携带 Access-Control-Allow-Credentials: true。

XMLHttpRequest 的 withCredentials 标志设置为 true,是为了客户端向服务端发送cookie,

响应中Access-Control-Allow-Credentials: true,是为了客户端能够接收cookie,无此标记,浏览器将不会把响应内容返回给请求的发送者。

因此,前端要携带cookie到服务端,需要三个条件:

新标准中提供了文档之间直接的消息传输API。而且不限制跨域消息传递!

发送消息使用的是Window对象的postMessage(data,targetURL)方法就可以了,但给哪个window对象发送消息,就使用哪个window的实例来调用,注意这个细节。

文档默认监听一下message事件就可以接受消息了:window.addEventListener("message", function (ev) {});

监听消息事件:ev两个重要属性:ev.source指向发送消息的源window对象,ev.data来获取收到的消息数据

多线程技术在服务端技术中已经发展的很成熟了,而在Web端的应用中却一直是鸡肋

在新的标准中,提供的新的WebWork API,让前端的异步工作变得异常简单。

使用:创建一个Worker对象,指向一个js文件,然后通过Worker对象往js文件发送消息,js文件内部的处理逻辑,处理完毕后,再发送消息回到当前页面,纯异步方式,不影响当前主页面渲染。

(责任编辑:IT教学网)

更多

推荐word文章