February 2008 Archives
连着三天参加了Oracle University的Oracle Database 10g: SQL Tuning Workshop的培训,获益非浅.
先上两张图,心得待续...:>
我的需求是这样的。
有一个应用是用.net开发的,主要是控制用户登录,用户访问权限的,部署在上海机房。现在就叫A应用吧
还有一个应用是用java开发,主要是具体业务的操作。部署在北京机房,这里叫B应用吧
由于已经有一个用户管理和权限的应用程序,所以java 开发的这个B应用就没有开发用户权限的功能,想直接使用.net的A程序。
用户访问的流程是这样的:
1.用户先在A处登录,A设自己的cookie,在A的菜单里有去B应用的链接
2.当用户点去B应用的链接时,A在链接上自动加上这个用户的token,传给B系统
3.当B系统接收到请求后,把这个用户的token信息设成自己系统的cookie,(B系统里有表单post操作,如果不设cookie,session,那么每个请求不管GET还是POST都要明确带着该用户的token信息,对于系统的改造量比较大,另外以后换权限验证方法改动也比较大。)
4.用户在B系统里的每次操作都没有明码带用户的token,所以每次都要去cookie得到token信息,然后发送一个http请求去A,让A系统验证这个用户是否有权限访问。
5.如果A系统的接口返回可以访问的状态报告,那么B继续执行;如果A系统指示没有权限访问,那么B系统提示访问受控警告信息。
一切开发都完成,到整合上线时,发现这个流程走不通,百思不得其解,想了半天也不知道 怎么 回事,google了半天,才发现原来是ie在捣鬼,IE不允许跨域访问cookie(好象firefox没问题,ie自6.0以后改用w3c组织的P3P协议了),再看看我的应用,在第二步设的cookie,在第三步以后所有B应用的访问请求,ie都把B应用的cookie blocked掉了(因为用户的访问是从A应用发起,从A应用访问B应用的东东,算跨域访问,IE认为有安全问题)。。。。(IE状态栏有一个红眼睛的button,点开可以看到哪些cookie给blocked掉了)
知道原因就好办了,再google知道可以用P3P header可以解决问题!
下面是java的解决办法之一,也是我的解决办法,不过个方法不太好:
直接往响应里加一个P3P的header
response().addHeader("P3P", "CP=\"IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA\"");
其中CP=“XXX XXXX”这些是有具体含义的:
CP就是compact policies的意思,
另外header的值也可以是policyref="http://myhost/P3P/PolicyReferences.xml",就是指定一个策略文件。
具体请看这里.
下面是摘抄的一段Compact Policies的具体取值范围和设值含义。
Compact Policies
Compact policies are essentially summaries of P3P policies. They can be used by user agents to quickly get approximate information about P3P policies, therefore improving performance.
For an in-depth explanation of compact policies, we refer to the P3P1.0[4] specification. Here, we limit to stating the syntax:
compact-policy-field = `CP="` compact-policy `"`
compact-policy = compact-token *(" " compact-token)
compact-token = compact-access |
compact-disputes |
compact-remedies |
compact-non-identifiable |
compact-purpose |
compact-recipient |
compact-retention |
compact-categories |
compact-test
compact-access = "NOI" | "ALL" | "CAO" | "IDC" | "OTI" | "NON"
compact-disputes = "DSP"
compact-remedies = "COR" | "MON" | "LAW"
compact-non-identifiable = "NID"
compact-purpose = "CUR" | "ADM" [creq] | "DEV" [creq] | "TAI" [creq] |
"PSA" [creq] | "PSD" [creq] | "IVA" [creq] | "IVD" [creq] |
"CON" [creq] | "HIS" [creq] | "TEL" [creq] | "OTP" [creq]
creq = "a" | "i" | "o"
compact-recipient = "OUR" | "DEL" [creq] | "SAM" [creq] | "UNR" [creq] |
"PUB" [creq] | "OTR" [creq]
compact-retention = "NOR" | "STP" | "LEG" | "BUS" | "IND"
compact-category = "PHY" | "ONL" | "UNI" | "PUR" | "FIN" | "COM" |
"NAV" | "INT" | "DEM" | "CNT" | "STA" | "POL" |
"HEA" | "PRE" | "LOC" | "GOV" | "OTC"
compact-test = "TST"
另外这里还有一个P3P的验证工具:http://www.w3.org/P3P/validator.html,可以验证一下自己设置的P3P是否正确。
这里还有一个老外写的不错的blog,也可以参考一下。http://www.sitepoint.com/article/p3p-cookies-ie6/2
大年初六,刮了几天的大风终于小点了,我和安安一商量决定去庙会逛逛.
安安提议去厂甸的庙会(没有门票),我们大早上向和平门出发了.到了和平门,还没出地铁,地铁的保安MM对大家说,如果去庙会的就不要出地铁了,厂甸庙会已经关了.保安MM是个好同志呀,怕大家费钱,一会还要再花钱坐地铁...
:<我狠狠的目视了一下安安,这个家伙,功课不做好.我们再一商量,决定杀奔地坛庙会,因为坐地铁直达:>
到了地坛,没想到最后一天人还是很多哟,到处是人挨人,人挤人.看来大家都是被大风憋了几天....
下面是随手拍的几张照片,更多请看这里:
米奇:>
标王家的伙计,很有个性
前几天看到章鱼的一篇文章是说升级的syntaxhighlighter,我想了想我的文章里也有代码,原来也是用syntaxhighlighter显示代码,不过这次把blog程序换成MT之后,一直没设置syntaxhighlighter,文章中的代码显示的都是很难看的textarea....
今天有点时间,决定加上这个东东.
首先在header的模板中加入syntaxhighlighter的css和核心的js,另外一些需要代码语言的js
最后在footer的模板中加入一段javscript,以显示代码
好啦,这回可以了,可以看看效果喽~
以下是收到的几个祝福短信,与大家共享:>
爆竹声声辞旧岁,新年到好运来!XX祝福您和您的家人春节愉快,鼠年有鼠不尽的快乐!鼠不尽的幸福!鼠不尽的财富!鼠不尽的喜气和收获!
春节快乐!XX恭祝您:大财,小财,意外财,财源滚滚;亲情,友情,爱情,情情如意;官运,财运,桃花运,运运亨通;爱人,亲人,友人,人人平安!
春节到了,第天一定要做三件事:第一件是笑(^-^);第二件是微笑(^o^);第三件是大笑(^0^).照此坚持,就会有愉快的新年 ^0^ XX给您拜年了,祝愿新春大吉,阖家欢快!
原来网站是我用rails程序写的,发表的文章URL都是类似这样的http://yigebuliu.com/article/show/aritcle_id
现在我改用movable type,虽说原来写的文章数据都保留了,但用这种URL访问过来,由于无法解析URL,全部报404错误页面,如google,baidu等搜索引擎还保留着原来那种URL,另外一些网站引用到网站的链接也是用的原来的URL,可movable 没有支持这种风格(反正我不知道怎么设).
因此我想解决这个问题,最后用了rewrite rule来解决此问题.记录一下!
首先先编写一个.htaccess文件,内容如下
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/article/show/.*$
RewriteRule ^(.*)$ $1.html
然后在网站目录上建立一个article/show目录
最后把movable type发布出来的静态html copy 到此目录下.
哈哈,结果用浏览器访问原来的url,比如:http://yigebuliu.com/article/show/100,再也不是可恶的404了,吼吼,成功,睡觉去也.
UPDATE:
看了访问日志,还有http://yigebuliu.com/article/tag/key这种情况.这是原来blog的tag访问方式,好办,再写个rewrite rule就行.
RewriteCond %{REQUEST_URI} ^/article/tag/.*$
RewriteRule ^article/tag/(.*)$ /cgi-bin/mt/mt-search.cgi?search=$1&IncludeBlogs=1
把所有/article/tag/*的这种访问uri全部rewrite成movable type搜索的uri就行了,也就是/cgi-bin/mt/mt-search.cgi?search=key&IncludeBlogs=1
今天早上看新闻,惊闻微软要收购yahoo...
yahoo算上一个过气的互联网大亨,在互联网上没有什么创新的东西.
M$在互联网上不算成功,但在操作系统领域是一个超强的霸主.
这次收购也就是说一个在互联网上没有什么建树的软件霸主和一个互联网公司进行互补.
另外:会不会以后yahoo的东东都用.net重构呢?哈哈,这个有意思.yahoo可是力挺php的,好象几个php语言的发明者在yahoo...yahoo以后新上的应用会不会都改成windows server + sql server +.net?


