window.open导致Cookie丢失?

luckyprg 2005-10-15 09:50:17
我在页面中用window.open(url,"_blank");打开一个新的本站点URL,结果导致整站Cookie全部丢失,有的页面也是同样的代码却不会发生这样的事件。百思不得其解。
查看微软相关文章:
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q315713
却没有给出解决方法。
请大家帮忙看看!谢谢!
...全文
2203 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
KingYoungsun 2006-05-24
  • 打赏
  • 举报
回复
faint! i made same mistake, wasted a mass of time.
Qqwwee_Com 2005-10-17
  • 打赏
  • 举报
回复
例外 Hander里面也要加一个:

p3p: policyref="/w3c/p3p.xml", CP="NOI DSP LAW NID PSA ADM OUR IND NAV"

一般都在IIS里面设置: "站点属性"--"HTTP 头"--添加


上面文件有3处可以动态设置:公司名 公司站点 logo

<DATA ref="#business.name">深圳市星空信息技术有限公司</DATA>
<DATA ref="#business.contact-info.online.uri">http://www.353.com/</DATA>


<IMG src="/w3c/Truste.gif" width="91" height="73" alt="TRUSTe: Click to Verify"/>



====CSDN 小助手 V2.0 2005年10月16日发布====
CSDN小助手是一款脱离浏览器也可以访问Csdn论坛的软件
界面:http://blog.csdn.net/Qqwwee_Com/archive/2005/10/16/504620.aspx
下载:http://szlawbook.com/csdnv2/csdnv2.rar
Qqwwee_Com 2005-10-17
  • 打赏
  • 举报
回复
你的问题可能是在站点隐私策略造成的
你测试下,把浏览请的“隐私”保护调整到最低是否可以解决问题

如果你出现这个问题,一般是因为打开弹窗的页面被嵌入在其他程序、域名的页面中,IE6认为你的站点cookie是第三方cookie而拒绝,新开的窗口当然不能使用cookie了。

解决这个问题,你需要在服务器上设置“站点信任策略”:实际上就是一个XML文件,放在响应Hander里面

p3p.xml

<?xml version="1.0" ?>
<META xmlns="http://www.w3.org/2000/12/P3Pv1">
<POLICY-REFERENCES>
<POLICY-REF about="/w3c/p3ppolicy.xml">
<INCLUDE>/*</INCLUDE>
</POLICY-REF>
</POLICY-REFERENCES>
</META>


p3ppolicy.xml

<?xml version="1.0" encoding="GB2312"?>
<POLICY xmlns="http://www.w3.org/2000/12/P3Pv1">
<ENTITY>
<DATA-GROUP>
<DATA ref="#business.name">深圳市星空信息技术有限公司</DATA>
<DATA ref="#business.contact-info.online.uri">http://www.353.com/</DATA>
</DATA-GROUP>
</ENTITY>
<ACCESS><nonident/></ACCESS>
<DISPUTES-GROUP>
<DISPUTES resolution-type="independent" service="http://www.truste.org/users/watchdog.html" verification="Truste" short-description="TRUSTe Certification">
<LONG-DESCRIPTION>Microsoft is a premier sponsor of TRUSTe and a member of the TRUSTe privacy program, an independent, non-profit initiative whose mission is to build users' trust and confidence in the Internet by promoting TRUSTe's principles of fair information practices.</LONG-DESCRIPTION>
<IMG src="/w3c/Truste.gif" width="91" height="73" alt="TRUSTe: Click to Verify"/>
<REMEDIES>
<correct/>
</REMEDIES>
</DISPUTES>
</DISPUTES-GROUP>
<STATEMENT>
<CONSEQUENCE>Cookies are used to track visitors to our site, so we can better understand what portions of our site best serve you.</CONSEQUENCE>
<PURPOSE><admin/><develop/></PURPOSE>
<RECIPIENT><ours/></RECIPIENT>
<RETENTION><stated-purpose/></RETENTION>
<DATA-GROUP>
<DATA ref="#dynamic.cookies" optional="yes"><CATEGORIES><state/></CATEGORIES></DATA>
</DATA-GROUP>
</STATEMENT>
</POLICY>



====CSDN 小助手 V2.0 2005年10月16日发布====
CSDN小助手是一款脱离浏览器也可以访问Csdn论坛的软件
界面:http://blog.csdn.net/Qqwwee_Com/archive/2005/10/16/504620.aspx
下载:http://szlawbook.com/csdnv2/csdnv2.rar
luckyprg 2005-10-17
  • 打赏
  • 举报
回复
不好意思!
经检查发现是我的一时疏忽,一不小心将取Cookie值的地方写错了导致Cookie丢失,浪费了大家这么多时间!(大红脸)

原来是我在取Cookie值操作时将
string _UserID = Request.Cookies["UserID"].Value;
写成了
string _UserID = Response.Cookies["UserID"].Value;
导致Cookies["UserID"]丢失了。
luckyprg 2005-10-17
  • 打赏
  • 举报
回复
TO:goody9807()
换种写法,你是想关闭父窗口吗
---------------------

您好!
我不是想关闭父窗口,只是关闭当前窗口,刷新父窗口的数据。

我想有可能都不关这些的事,因为我用思归大哥提供的工具查看Cookies,结果发现在执行上面的JS后竟然只丢失了一个Cookies,faint!

下面是Cookie的情况:
Cookie: UserID=; UserName=lucky;

而这两个Cookie我都是用一样的方法设定的,而且没有将Cookie设为“”的地方。
Response.Cookies["UserID"].Path = "/";
Response.Cookies["UserID"].Value = UserID;
Response.Cookies["UserID"].Expires = new DateTime(2010,1,1 );
Response.Cookies["Username"].Path = "/";
Response.Cookies["UserName"].Value = UserName;
Response.Cookies["UserName"].Expires = new DateTime(2010,1,1 );






goody9807 2005-10-17
  • 打赏
  • 举报
回复
<script>if(opener!=null){opener.location.href=opener.location.href;} window.close();</script>
_________________
换种写法,你是想关闭父窗口吗
luckyprg 2005-10-17
  • 打赏
  • 举报
回复
TO:eyych(庆祝神六发射成功!)
----------------------------------------

Sorry,现在的问题是window.open出来的页面中执行
<script>if(opener!=null){opener.location.href=opener.location.href;} window.close();</script>
这段JS才会导致Cookies丢失。
eyych 2005-10-17
  • 打赏
  • 举报
回复
不会吧?
俺的怎么没事呢?
俺用window.open,
Cookie不丢失啊。。。。。。。。。。。。。
saucer 2005-10-17
  • 打赏
  • 举报
回复
没什么好的建议,因为好像现在IE不允许你设置新开的窗口是否与原窗口处于同一进程,但建议用下面这个工具,看一下header的传输情况

http://www.blunck.info/iehttpheaders.html
luckyprg 2005-10-17
  • 打赏
  • 举报
回复
TO:saucer(思归)
是同一个Application的么?
--------------------------------------
是同一个虚拟目录。



试着把Cookie的Path设成"/"
--------------------------------------
我设了。


今天早上执行了一下Windows Update,发现window.open已不会丢失Cookies了,不过在open的页面中执行下面的JS后还是会令到虚拟目录中的Cookies丢失。
Response.Write("<script>if(opener!=null){opener.location.href=opener.location.href;} window.close();</script>");
luckyprg 2005-10-17
  • 打赏
  • 举报
回复
TO: cuike519(Help you,Help me)
你是在页面里面打开页面,还是在showModessdialog打开的对话框中又打开一个页面,如果是这样,IE6此时会启动一个新的IE进程,导致新的IE进程中并没有Cookie的信息,所以在这个页面里Cookie丢失了。这是微软的一个bug目前只能尽量避免这种使用。
-------------------------------------------------------------------------------------
您好!不是新的IE进程中没有Cookies,而是opener中的Cookies也丢失了。
saucer 2005-10-16
  • 打赏
  • 举报
回复
>>>打开一个新的本站点URL,结果导致整站Cookie全部丢失

是同一个Application的么?

>>>我的Cookies过期日期设定的时间为2010年

试着把Cookie的Path设成"/"
moodboy1982 2005-10-15
  • 打赏
  • 举报
回复
saucer(思归):你的回复可以用中文吗?也好让我们这些不懂E文的初学者也跟着学点呀。
saucer 2005-10-15
  • 打赏
  • 举报
回复
the problem is due to the fact that a new internet explorer process is created, have you tried

1. use

window.open(url,"AnyNameOtherThanBlank");

or

2. use persistent cookies instead

?
minghui000 2005-10-15
  • 打赏
  • 举报
回复
up
cuike519 2005-10-15
  • 打赏
  • 举报
回复
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q315713
文章中描述的情况发生在当你在IE6中使用open打开一个File://类型的链接,比如:
window.open("file://c:/text.txt",_blank);时才出现。

你的问题好象和这个没有关系,我记得曾经在微软的网站上看到一个在IE6中使用Iframe的时使用window.open的页面可能会导致丢失Cookie。地址记不起来了,你去微软的support上面找找吧。

你是在页面里面打开页面,还是在showModessdialog打开的对话框中又打开一个页面,如果是这样,IE6此时会启动一个新的IE进程,导致新的IE进程中并没有Cookie的信息,所以在这个页面里Cookie丢失了。这是微软的一个bug目前只能尽量避免这种使用。

看来IE6对Cookie的支持还是有很多问题啊。

:-(
adandelion 2005-10-15
  • 打赏
  • 举报
回复
GZ
vickyyu 2005-10-15
  • 打赏
  • 举报
回复
奇怪,那能有什么影响呢
adandelion 2005-10-15
  • 打赏
  • 举报
回复
试试showModessdialog/showModaldialog,可以吗?我也不会的.
luckyprg 2005-10-15
  • 打赏
  • 举报
回复
saucer(思归) 您好!

我试过
window.open(url,"myPopName");或window.open(url);
问题依旧。

我的Cookies过期日期设定的时间为2010年。只要不执行window.open就没事,所以问题应该在window.open这里。

我奇怪的是微软也承认这是一个BUG存在于IE6当中,但是却没有给出解决方法。
通过页面性能测试概念+页面加载过程+页面性能指标+页面性能测试工具的学习,可以学到如下内容:①WEB网站页面性能的指标(白屏时间、首屏加载完成时间、FP、FCP、DCL、CLS、FPS等);②WEB网站页面性能测试策略;③WEB网站页面加载过程(前端基础语言:HTML+CSS+JavaScript,DOM、CSSOM、渲染树、布局、绘制);④WEB网站页面性能测试工具的实际操作和功能介绍(开发者工具:控制台、网络、性能、Lighthouse、FPS渲染统计等);⑤WEB网站页面性能测试报告编写。⑥WEB网站页面性能测试步骤和实际操作。课程内容:第一章:课程简介1、课程介绍2、课程大纲第二章:页面性能测试1、页面性能测试概念2、页面性能测试专业术语3、页面性能测试策略第三章:页面加载过程1、HTML概念,HTML5实例,HTML5文档2、CSS概念,CSS实例,CSS文档3、JavaScript概念,JavaScript脚本实例和作用4、DOM和CSSOM理解5、HTML5渲染引擎理解6、HTML5页面内容渲染的过程,HTML渲染树第四章:页面性能测试工具1、页面性能测试具体工具2、Chrome开发者工具介绍第五章:页面性能测试工具-控制台:window.performance1、控制台:window.performance介绍2、window.performance.timing执行结果加载字段理解3、window.performance.timing执行结果属性对应页面阶段理解4、window.performance页面性能参数计算5、window.performance页面性能关键指标计算第六章:页面性能测试工具-网络面板1、Chrome-开发者工具-网络面板介绍2、Chrome-开发者工具-网络-瀑布流指标第七章:页面性能测试工具-性能面板1、Chrome-开发者工具-性能面板-使用方法2、Chrome-开发者工具-性能面板介绍3、Chrome-开发者工具-性能面板-控制按钮区域4、Chrome-开发者工具-性能面板-Overview区域5、Chrome-开发者工具-性能面板-火焰图区域6、Chrome-开发者工具-性能面板-内存图区域7、Chrome-开发者工具-性能面板-统计汇总区域8、Chrome-开发者工具-性能面板-统计汇总区域-摘要内容9、Chrome-开发者工具-性能面板-统计汇总区域-事件时长、调用、发生顺序第八章:页面性能测试工具-FPS监控1、Chrome-开发者工具-FPS监控-FPS介绍、FPS视觉效果、FPS查看方法第九章:页面性能测试-Lighthouse面板1、Chrome-开发者工具-Lighthouse介绍、操作方法、运行的生命周期2、Chrome-开发者工具-Lighthouse报告指标分析3、Chrome-开发者工具-Lighthouse的报告优化建议第十章:页面性能测试工具-Performance insights面板1、Chrome-开发者工具-Performance insights操作方法2、Chrome-开发者工具-Performance insights分析报告第十一章:网速调研1、全国网速的调研和本机网速测试第十二章:页面性能测试总结1、页面性能测试指标采集方式2、页面性能测试报告3、页面性能测试-操作步骤​

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧