RHTTPHeaders有bug,使用须谨慎

重构http引擎时,想要dump出所有的http response头域,结果在Set-Cookie上栽了跟头。

现象很诡异,有时候RHTTPHeaders::GetRawField()拿Set-Cookie头的值时,内容居然是“Cookie”,这叫什么活啊?

遇到这问题的不是哥一个,还有其他的一些倒霉蛋,FN Nokia有帖子为证,地址不附了,自己Google。

注意,我说的是有时候,也就是说,也有时候是正常的,内容比如为“JSESSIONID=XXXXXXXXX; path=/”

经过俺的努力调研,公布如下调查结果:

1.老老实实使用RHTTPHeaders::GetParam()常规手段拿Set-Cookie,这个是不会出错的,不过写出来的代码稍显猥琐,还很冗长,没办法,这也是狗日的Symbian代码的特色之一了。

2.实在跟哥一样喜欢偷懒想使用RHTTPHeaders::GetRawField()的话,千万记住,不要在Set-Cookie上将RHTTPHeaders::GetRawField()跟RHTTPHeaders::GetParam()混起来使用。你可以做如下测试:

  1)用RHTTPHeaders::GetParam()正常拿Cookie,成功。
  2)用RHTTPHeaders::GetRawField()拿Cookie原始数据。你会发现拿到的数据内容是“Cookie”。
  3)再次用RHTTPHeaders::GetParam()拿Cookie,这时会导致http自己发生panic(但是不会导致你的程序崩掉,狗血吧!)。

3.RHTTPHeaders不支持重复头域。也就是说,假如你拿到一个response,头域中有多个Set-Cookie头(貌似这是符合http规范的),RHTTPHeaders只让你拿到第一个,后续的你是拿不到的。那有没有其他途径能拿到?答案是没门。

结论:
  1)symbian实在操蛋
  2)除了Set-Cookie头会有这样的情况,其他http标准头是否也有此情况?暂未测试,不过结果应该也是悲观的。

转载于:https://www.cnblogs.com/laoyur/archive/2011/04/01/2001950.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值