Ticket #92 (new defect: null)
关于部分用户登录报错
| Reported by: | liaojunqiang | Owned by: | |
|---|---|---|---|
| Priority: | trivial | Milestone: | |
| Component: | 商家后台 | Version: | |
| Keywords: | ip 超过字段长度 | Cc: | |
| Due Date: | 15/03/2012 |
Description (last modified by liaojunqiang) (diff)
1.问题
需求报障,it商城某一家店铺登录时出现"你输入的字数超过数据库限定的长度",但是我用我的电脑可以正常登录;
2.调查
登录的时候除了记日志,没有其他的数据库出错,可能是记日志时,某个字段值太大所导致,查服务器的日志所得,是ip地址过长,导致记录日志时出错;
org.apache.openjpa.lib.jdbc.ReportingSQLException: ORA-12899: value too large for column "CYP_NW_APP"."ENT_LOGIN_LOG"."IP" (actual: 59, maximum: 50)
221.130.30.180/ 122.85.18.45, 127.0.0.1, 221.130.30.180
221.130.30.180这个就是我们在移动节点的服务器IP
3.解决
修改录入ip时限制长度,联系服务器管理配置一下X-Real-IP,因为程序检测到没有X-Real-IP就去取X-Forwarded-For.
名词解释:
X-Real-IP:
反向代理时用于取得用户真实IP(资料很少,有待补充)。
X-Forwarded-For:
是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。
这一HTTP头一般格式如下:
X-Forwarded-For: client1, proxy1, proxy2
其中的值通过一个 逗号+空格 把多个IP地址区分开, 最左边(client1)是最原始客户端的IP地址, 代理服务器每成功收到一个请求,就把请求来源IP地址添加到右边。 在上面这个例子中,这个请求成功通过了三台代理服务器:proxy1, proxy2 及 proxy3。请求由client1发出,到达了proxy3(proxy3可能是请求的终点)。请求刚从client1中发出时,XFF是空的,请求被发往proxy1;通过proxy1的时候,client1被添加到XFF中,之后请求被发往proxy2;通过proxy2的时候,proxy1被添加到XFF中,之后请求被发往proxy3;通过proxy3时,proxy2被添加到XFF中,之后请求的的去向不明,如果proxy3不是请求终点,请求会被继续转发。
鉴于伪造这一字段非常容易,应该谨慎使用X-Forwarded-For字段。正常情况下XFF中最后一个IP地址是最后一个代理服务器的IP地址, 这通常是一个比较可靠的信息来源。
![(please configure the [header_logo] section in trac.ini)](http://www1.pconline.com.cn/global/2008/images/jss/m_logo091125.jpg)