id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	due_date
92	关于部分用户登录报错	liaojunqiang		"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地址, 这通常是一个比较可靠的信息来源。"	defect	new	trivial		商家后台			ip 超过字段长度		15/03/2012
