浏览模式: 普通 | 列表
11月, 2009 | 1 | 2 | 3 | 4 | >
一个位于iframe中的aspx页面,通过iframe的src参数调用,并传递参数,但是ASPX页面无论如何也不能保存SESSION,COOKIES也不行,后来在网络上搜索了相关文章后才知道,IE默认不接受没有标识为安全的第三方COOKIE,造成不能保存COOKEIS以及SESSION。
处理方法:
打开IIS管理器,打开ASPX页面所在的那个站点的属性->HTTP头->添加按钮

自定义HTTP头为 P3P
自定义HTTP头值为 CP=”CAO PSA OUR”

然后保存,再试ASPX访问一切正常。

在开发中,我们经常会遇到使用Frame来工作,而且有时是为了跟其他网站集成,应用到多域的情况下,而Iframe是不能保存Session的。因此,网上可以找到很多相关的文章,如果网站可以采用设置Web.Config中的配置:<sessionState
mode="StateServer"
...

阅读全文…
之前的博客iframe和跨站点cookie引起的session失效问题中已经讲到过此问题,其根源也是由于iframe跨站点cookie被阻导致session失效。但是当时因为两个站点都是自有的服务器,因此通过设置了相同的父域名解决了此问题,所以后来也就没有深入研究此问题。
目前在开发新功能时,又一次遇到了此问题,但是如果仍旧通过更改域名的方式来解决的话,设计上可能就会非常麻烦。于是不得已彻底翻了一下资料,初步研究结果如下:
问题根源:
...

阅读全文…

多域名站点共享COOKIE

[ 2009-11-30 11:01:13 | 作者: admin ]
p.s. 架构轻盈,效果实现

    问题描述:在一个比较复杂的网站环境下。有多个产品向外提供服务。每个产品下都有自己的用户登录界面。现在需要设计一个统一的登录界面。 当用户在这个界面登录后就可以自由的使用各个产品和服务。同时意味着用户用一个帐号可以在不同服务里登录,另一方面就是在一个服务里面登录后可以无障碍的 漫游到其他服务里面去。

            实际应用:Sohu的Passport将focus.cn,17173.com,sogou.com,chinaren.com这四个域 名下的产品全部整合在一起了。用户在这四个站点中任何一个地方都可以登录。当用户登录后可以自由的使用其他域名下的服务。现在很多网站上都有bbs blog album服务。这些服务一般也是自己维护自己的用户信息。当发展到一定时候,也需要一个Passport机制整合所有服务,使用户可以单点登录。

Sohu的实现方案在http://passport.sohu.com/ 登录后 fiddler可以拦截到如下的返回信息:
...

阅读全文…
p.s. 域名下多子网站cookie共享问题经常需要用到,除了开放,重要的是cookie安全

COOKIE可以自动由子级域名分享,无须做什么特别设置。对网站www.abc.com,check.abc.com来说,它们都是二级域名,一级域名是abc.com。所以,保存COOKIE的时候,将Cookie的Domain设置成“.abc.com”,无论www.abc.com还是check.abc.com,都可以顺利读取

public void WriteToCookie(int userId)

        {

               HttpCookie cookie = new HttpCookie(“UserInfo”);

               cookie.Values.Add(“UserId”, userId.ToString());

               cookie.Expires = DateTime.Now.AddHours(1);
...

阅读全文…
p.s.有时候,一个域名转出去了,而邮件系统下面没有及时删除该域,那么当于这个域进行通信的时候,系统就会报错。

关于出现在退信中的 536 authentication failed 错误信息。邮件系统内的域名,都必须被正确解析到您的邮件服务器地址。当退信中有此错误信息时,查一下邮件系统是否建有发送方的邮址域名。
比如:在域名管理中创建 yahoo.com 域名,那么所有来自 yahoo.com 的邮件都会被退回,其错误信息即为:536 authentication failed.

如果此错误信息是出现在Outlook Express等客户端软件的报错框中时,那就是Outlook Express等客户端软件中身份认证的信息填写错误引起的。

另外,如果邮件服务器前架设有硬件防火墙时,也有可能是因为在防火墙里设置了fixup protocol smtp 25 引起的问题,您可以联系防火墙厂商解决。
以往as2.0通过web传递参数给swf
只需swf声明一个变量,如: var par:String;
WEB传递参数方式可以按如下方式: demo.swf?site=52News.com
这样子swf就能取得到web传递的参数值,
如地址栏直接输入情况,可以使用 _root.site
如被其他swf内部load的可以使用 this.site

as3.0改变了些方式,要取得web传递的参数需要使用loaderInfo.parameters[]方法。

如:web传递参数为: demo.swf?site=52News.com
swf 可先声明一个变量
var id:String;
id = loaderInfo.parameters["site"]; //parameters["site"] 中 site为web的参数名。
<html>
<head>
<script>
function Test(){
              var str="";
              str+="Hello,";
              str+="This is a Test!<br />";
              str+="I Love you;<br />";
              str+="I Love you,too!";
              p.innerHTML=str+"<br /><br />"+Math.random();
              setTimeout('Test();',1000);
}
</script>
</head>
<body onload=Test();>
<span id="p"></span>
</doby>
</html>

innerTEXT与innerHTML的区别:
[img]attachments/200911/21...

阅读全文…