订阅所有JSP/Servlet的日志 订阅 | 这是最新一篇日志 上一篇 | 下一篇日志 下一篇 ]
解决方案

三级中文子域名支持的探索

由于CJW支持中文用户名,三级中文子域名泛解析比如 永远的最爱JAVA.blog.chinajavaworld.com,解析没有问题。但在应用过程上遇到了两个问题:

1.在地址栏中输入
1
http://永远的最爱JAVA.blog.chinajavaworld.com/

在应用服务器中 request.getServerName() 得到的中文是乱码。即:??????????java.blog.chinajavaworld.com.

研读Resin源码,找到 com.caucho.server.http.HttpRequest 类,加入两行代码以支持 request.getServerName()的中文问题:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
  /**
   * Parses headers from the read stream.
   *
   * @param s the input read stream
   */
  private void parseHeaders(ReadStream s) throws IOException
  {
    // This is still slowest part of the web server.  I don't see how
    // to improve it much more, but there must be a way.
    int version = getVersion();
 
    if (version < HTTP_1_0) {
      return;
    }
 
    if (version < HTTP_1_1)
      killKeepalive();
 
    byte []readBuffer = s.getBuffer();
    int readOffset = s.getOffset();
    int readLength = s.getLength();
 
    char []headerBuffer = _headerBuffer;
    int headerOffset = 1;
    int headerBufferSize = headerBuffer.length;
    headerBuffer[0] = 'z';
    int headerSize = 0;
    _headerSize = 0;
 
    CharSegment []headerKeys = _headerKeys;
    CharSegment []headerValues = _headerValues;
 
    boolean debug = log.isLoggable(Level.FINE);
 
    while (true) {
      int ch;
 
      int keyOffset = headerOffset;
 
      // scan the key
      while (true) {
        if (readLength <= readOffset) {
          readOffset = 0;
          if ((readLength = s.fillBuffer()) <= 0)
            return;
        }
        ch = readBuffer[readOffset++];
 
        if (ch == '\n') {
          s.setOffset(readOffset);
          return;
        }
        else if (ch == ':')
          break;
 
        headerBuffer[headerOffset++] = (char) ch;
      }
 
      while (headerBuffer[headerOffset - 1] == ' ')
        headerOffset--;
 
      int keyLength = headerOffset - keyOffset;
      headerKeys[headerSize].init(headerBuffer, keyOffset, keyLength);
 
      do {
        if (readLength <= readOffset) {
          readOffset = 0;
          if ((readLength = s.fillBuffer()) <= 0)
            return;
        }
        ch = readBuffer[readOffset++];
      } while (ch == ' ' || ch == '\t');
 
      int valueOffset = headerOffset;
 
      // scan the value
      while (true) {
        if (readLength <= readOffset) {
          readOffset = 0;
          if ((readLength = s.fillBuffer()) <= 0)
            break;
        }
 
        if (ch == '\n') {
          int ch1 = readBuffer[readOffset];
 
          if (ch1 == ' ' || ch1 == '\t') {
            ch = ' ';
            readOffset++;
 
            if (headerBuffer[headerOffset - 1] == '\r')
              headerOffset--;
          }
          else
            break;
        }
 
        headerBuffer[headerOffset++] = (char) ch;
 
        ch = readBuffer[readOffset++];
      }
      
      //加入以下两行代码,设置_host
      String readStr = new String(readBuffer);
      _host = readStr.split("Host:")[1].split("\n")[0];
 
      while (headerBuffer[headerOffset - 1] <= ' ')
        headerOffset--;
 
      int valueLength = headerOffset - valueOffset;
      headerValues[headerSize].init(headerBuffer, valueOffset, valueLength);
 
      if (debug) {
        log.fine(dbgId() +
                 headerKeys[headerSize] + ": " + headerValues[headerSize]);
      }
      
      if (addHeaderInt(headerBuffer, keyOffset, keyLength,
                       headerValues[headerSize])) {
        headerSize++;
      }
      
      _headerSize = headerSize;
    }
  }


修改并替换后重启Resin

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Protocol: HTTP/1.1
Scheme: http
Server Name: 永远的最爱java.blog.chinajavaworld.com:8080 
Server Port: 8080
Protocol: HTTP/1.1
Server Info: Resin/3.0.24
Remote Addr: 127.0.0.1
Remote Host: 127.0.0.1
Character Encoding: UTF-8
Content Length: -1
Content Type: null
Auth Type: null
HTTP Method: GET
...


可以发现request.getServerName()可以显示中文。

2.原以为这下可以解决问题了,第二个问题的发现很不好办:

域名中带有中文的,Cookie读取不到。这意味着中文用户名的用户登录后访问自己的博客或同样带中文域名的博客时,都处于未登录状态。这是Cookie的规范,只能想别的办法。

解决办法还是有,比如可以在登录系统登录成功后,产生一个key,将用户的认证信息通过这个key存进分布式Cache中,同时在定向到成功页面的同时,将这个key做为参数传过去,新页面接收到key后从分布式Cache中取认证信息,这种方法虽然可以解决,但这个key必须在所有相关操作页面传递,影响用户体验。

目前采取了折中的办法,如果用户名是非字母或数字的,就用用户ID做为三级子域名进行访问。

平均得分
(0 次评分)





文章来自: 本站原创
标签: 泛解析 域名 
评论: 27 | 查看次数: 5011
  • 共有 27 条评论
  • 1
  • 2
  • |
  • >>
yanlink [2010-08-05 14:46:39]
szjzfbq [2009-09-09 16:58:48]
也许今天很多人都期望杜丽能够拿到本届奥运会的首枚金牌,当最终她只获得了一个第五时,可能大家都感到些许遗,当记者问她是不是感觉压力很大时.深圳搬家杜丽先是笑了笑,但还是抑制不住掉下了眼泪,她说:"我已经非常努力了我只想看到五星红旗飘起来……”。 深圳搬家公司</a和>深圳空调拆装师傅都来到现场,其实虽然你没有拿到这个冠军,但是我想说的是你仍然是我们中国人心中的冠军!深圳布吉搬家公司我们还是会一如既往的支持你在几天以后的比赛中发挥出色,杜丽加油!中国加油!奥运加油!深圳搬厂公司 ....
beeflee [2009-08-03 22:29:00]
beeflee [2009-06-09 13:26:24]
gwsms [2009-05-02 13:07:08]
气质是与生俱来的,也是每个人都独有潜在特质。要划分气质的种类,短信群发可以说成冷和热两种气质。有的人奔放豪迈,个性随和;而有的人温婉冷俊,个性低调。在娱乐圈,女明星的气质犹如一面会说话镜子,什么样的类型就会产生什么样的效果,而下面这十位女星就是低调型的最佳代表。
短信群发
短信群发器
彩信群发
短信群发器
小灵通短信群发器
彩信猫
短信猫
手机主题下载网,主要提供诺基亚,摩托罗拉等手机主题下载.非主流手机主题
头痛,大抵因为想不通。虽然说,想不通纯属正常,qq空间代码
可如果老是想不通,生活就会压抑就会没意思。所以,努力想通是我们的革命道路。放眼望去,已经有不少人在这条道路上奋勇前进。但是,革命尚未成功,qq空间免费播放器我也得投身进去努力努力。不说会有多大贡献,至少也能减少一点点头痛吧。为了弘扬女士优先的绅士风度,先说说女人最头痛男人哪10件事。嘿,那边的女士们,快点看过来吧。
短信群发
GSM短信猫
cdma短信猫
小灵通短信猫
串口短信猫
USB短信猫
西门子短信猫
gprs彩信猫
cdma短信猫
8口短信猫池
WAVECOM短信猫
小灵通短信猫
短信猫
手机短信群发
短信群发平台
上海短信群发
广州短信群发
深圳短信群发
成都短信群发
杭州短信群发
郑州短信群发
上海短信猫
北京短信猫
深圳短信猫
广州短信猫
苏州短信猫
杭州短信猫
天津短信猫
宁波短信猫
南京短信猫
温州短信猫
大连短信猫
青岛短信猫
厦门短信猫
无锡短信猫
佛山短信猫
东莞短信猫
中山短信猫
济南短信猫
珠海短信猫
常州短信猫
重庆短信猫
惠州短信猫
成都短信猫
西安短信猫
绍兴短信猫
武汉短信猫
长春短信猫
长沙短信猫
沈阳短信猫
烟台短信猫
芜湖短信猫
南通短信猫
哈尔滨短信猫
泉州短信猫
台州短信猫
威海短信猫
嘉兴短信猫
合肥短信猫
南昌短信猫
秦皇岛短信猫
郑州短信猫
福州短信猫
呼和浩特短信猫
镇江短信猫
金华短信猫
石家庄短信猫
淄博短信猫
乌鲁木齐短信猫
南宁短信猫
徐州短信猫
潍坊短信猫
贵阳短信猫
包头短信猫
扬州短信猫
济宁短信猫
桂林短信猫
廊坊短信猫 
昆明短信猫
柳州短信猫
吉林短信猫
湖州短信猫
太原短信猫
泰州短信猫
兰州短信猫
日照短信猫
南平短信猫 
淮安短信猫
临沂短信猫
九江短信猫
昆山短信猫
江阴短信猫
宜兴短信猫
beeflee [2009-04-23 15:41:15]
游客 [2009-01-22 17:06:19]
从牛年春节开始,愿你每天有一个好心情,每夜做一个甜蜜梦,让你时时有人关心,处处受人关注!好好发大财!

公兴搬场公司,一句平淡如水的问候,很轻;一声平常如纸的祝福,很真;上海中铁摘一颗星,采一朵云,装入平安快乐的信封里送给你,祝你和全家人新年快乐!
1$$$$$$$$$$$$当公兴搬场公司收到这些钱的符号时,就表示你已接到财神爷的祝福,他会为你在新的一年里带来财运哦!
上海搬场公司愿片片洁白美丽的雪花,带着搬场公司良好的祝愿,飞到您的身边,祝您新年如意,事业发展!
上海搬场一丝真诚,胜过千两黄金;一丝温暖,能抵万里寒霜,搬家公司一声问候,送来温馨甜蜜;一条短信,捎去上海搬家万般心意!愿上海搬家公司的朋友新年万事如意!
2009,汽车租赁租车一家瑞气,二气雍和,三星拱户,四季平安,五星高照,六畜兴旺,总之新年快乐,万事如意!
“春风得意马蹄疾”。新年伊始,上海汽车租赁愿你乘着和煦的上海租车风,朝着灿烂的前景,马不停蹄,奔腾前进!
一份不渝的友谊,挚着千万个祝福,给上海物流公司想念的朋友,温声地问侯:春节快乐!新年进步!
一个打折机票影子很孤单,两朵玫瑰飞机票才新鲜;一个国际机票心情常期盼,两处天空多浩瀚;正看短信的小笨蛋,为何让特价机票总怀念,上海机票祝你春节快乐!
一串真挚的祝福,一个不平凡的心意,乘着上海中铁爱的短消息,送进您的心里。春节快乐!
一份不渝的爱情,执着千万个祝福,送给思念的上海物流爱人,捎去温馨地问候。不管我们的距离有多么远,关怀上海货运公司的心永远不变。祝你新年好!

好喜欢你的软,好喜欢你的酥,好喜欢你的粘,好喜欢你圆圆的头,哈哈,因为你是汤圆,祝你元宵节快乐!
从牛年春节开始,愿你每天有一个好心情,每夜做一个甜蜜梦,让你时时有人关心,处处受人关注!好好发大财!

公兴搬场公司,一句平淡如水的问候,很轻;一声平常如纸的祝福,很真;上海中铁摘一颗星,采一朵云,装入平安快乐的信封里送给你,祝你和全家人新年快乐!
1$$$$$$$$$$$$当公兴搬场公司收到这些钱的符号时,就表示你已接到财神爷的祝福,他会为你在新的一年里带来财运哦!
上海搬场公司愿片片洁白美丽的雪花,带着搬场公司良好的祝愿,飞到您的身边,祝您新年如意,事业发展!
上海搬场一丝真诚,胜过千两黄金;一丝温暖,能抵万里寒霜,搬家公司一声问候,送来温馨甜蜜;一条短信,捎去上海搬家万般心意!愿上海搬家公司的朋友新年万事如意!
2009,汽车租赁租车一家瑞气,二气雍和,三星拱户,四季平安,五星高照,六畜兴旺,总之新年快乐,万事如意!
“春风得意马蹄疾”。新年伊始,上海汽车租赁愿你乘着和煦的上海租车风,朝着灿烂的前景,马不停蹄,奔腾前进!
一份不渝的友谊,挚着千万个祝福,给上海物流公司想念的朋友,温声地问侯:春节快乐!新年进步!
一个打折机票影子很孤单,两朵玫瑰飞机票才新鲜;一个国际机票心情常期盼,两处天空多浩瀚;正看短信的小笨蛋,为何让特价机票总怀念,上海机票祝你春节快乐!
一串真挚的祝福,一个不平凡的心意,乘着上海中铁爱的短消息,送进您的心里。春节快乐!
一份不渝的爱情,执着千万个祝福,送给思念的上海物流爱人,捎去温馨地问候。不管我们的距离有多么远,关怀上海货运公司的心永远不变。祝你新年好!

好喜欢你的软,好喜欢你的酥,好喜欢你的粘,好喜欢你圆圆的头,哈哈,因为你是汤圆,祝你元宵节快乐!
游客 [2009-01-08 14:42:44]
http://www.bestprog.com 出会いサイト-Lovers
http://www.interbd.com 出会い系サーチ
http://www.zappeduster.com 出会い系サイトFreedom
http://www.grupopenelope.com セフレPlaySpot
http://www.42plus.com メル友無料募集サイト
http://www.brv-inc.com 人妻がハマる出会い系
http://www.meditacija.net 不倫人妻秘密サークル
http://www.aec-dk.com/ ご近所の人妻探し
http://www.mb-friends.net/ セフレ伝説-セフレ探し専門サイト-
http://seo-mobi.net/jk/ 女子高生!
http://www.hmt-ag.com/ ご近所の出会い探し
http://www.biotechcgi.com/ 出会い放題
http://www.hi-tech-reno.com/ 素敵な恋人探し
http://www.mb-deai.net/ 人妻DX
http://www.littlediablo.net/ 出会いの森
http://www.ccc-p.com/ 出会い系オンリー
http://www.sit-n-shop.com/ メル友ちぇき!
http://www.mtdcases.com/ セフレステーション
http://www.louisville-realtor.com/ 人妻Magic!!
http://www.heartminders.com/ 不倫ありませんか!
http://www.targetvehiclerental.com/ ピンクの恋人
http://www.mail24x7.com/00/idkb0022.html プチ家出掲示板NO.1!リターンズ
http://www.kessel-diamonds.com スタビLuxury
http://sincerely-love.com/00 セックスフレンド無料サイト-プレミアム
http://www.cambridgeins.com/ セックスフレンド大陸
http://www.lots-ins.com/ ご近所のアイシテル!
http://www.chihuahuaelpub.com/ 出会い探し
http://www.aec-dk.com/merutomo/ ご近所のメル友探し
http://www.andritz-na.com/merutomo/ メル友を探そう
http://www.hi-tech-reno.com/merutomo/ 素敵なメル友探し
http://www.sugudeai.com/ 出会い系案内所
游客 [2009-01-05 14:47:34]
游客 [2008-12-31 14:34:22]
游客 [2008-12-25 17:47:01]
游客 [2008-12-11 14:00:09]
windowsjava [2008-11-05 16:05:58]
CJW的泛域名解析,是不是每个url都要经过一次解析和转向?或url重写。
游客 [2008-11-01 14:27:27]
游客 [2008-10-27 15:46:35]
Lord of the Rings Online Gold
Buy Lotro Gold
Sell LoTRO Gold
LoTRO CD Key
LoTRO Europe Gold
Cheap LoTRO Accounts
Lord of the Rings Online Power Leveling
Lord of the Rings online CD Key
Cheap Lotro Gold
Buy Lotro Gold | Lord Of The Rings Online Gold
Lotro Accounts
| Buy Lotro Accounts
Lord Of The Rings Online Power Leveling | Lord Of The Rings Online PowerLeveling
Lotro Cd Key | Lord Time Card
Lotro Gold | Lotro Gold Instant Delivery
lord of the rings online accounts | lord of the rings online accounts for sale
Lotro Power Leveling | Lotro Powerleveling
Lord Of The Rings Online Cd Key | Lord Of The Rings Online Time Card
Air Jordan Shoes
Warhammer Gold
Warhammer Online Gold
Warhammer Accounts
Warhammer Power Leveling
Warhammer Online Key
Warhammer Gold
Warhammer Online Gold
Warhammer Time Card
Warhammer CD Key
WAR gold
warhammer online gold
Buy WAR gold
Buy warhammer gold
Buy warhammer online gold
warhammer gold
WAR Accounts
warhammer Accounts
warhammer online Accounts
Buy WAR Accounts
warhammer Accounts for sale
Warhammer Power Leveling
Warhammer Online Power Leveling
War Power Leveling
Buy Warhammer Power Leveling
Warhammer PowerLeveling
Cheap Warhammer Power Leveling
Cheap Warhammer Online Power Leveling
Buy War Power Leveling
Warhammer EU Power Leveling
Cheap Warhammer Gold
Cheap Warhammer online gold
Buy Cheap Warhammer Gold
Buy WAR Gold
Warhammer EU Gold
Warhammer EU Power Leveling
Warhammer EU CD Key
Warhammer EU Accounts
Warhammer CD Key
Warhammer online CD Key
Warhammer Timecard
Buy Warhammer Time Card
Warhammer 60 days Time Card
Cheap WAR Accounts
Cheap warhammer Accounts
Cheap warhammer online Accounts
Buy Cheap WAR Accounts
buy Warhammer CD Key
buy Warhammer online CD Key
cheap Warhammer CD key
warhammer time card
Warhammer prepaid time card
  • 共有 27 条评论
  • 1
  • 2
  • |
  • >>
发表评论
昵 称:  登录
内 容:
选 项:
字数限制 1000 字 | UBB代码 开启 | [img]标签 开启