当我通过wifi向web服务发出请求时,一切都运行得很好,但在具有WAP连接的GPRS上进行请求时是一样的(我无论如何都没有强制连接到WAP,这可能取决于运营商。在阿根廷完成的测试)服务器正在接收Content-Type和Content-Length中的重复值。
下面是同样的请求,首先通过WiFi登录服务器,然后通过GPRS登录服务器。
通过WiFi:
POST /ODP/Services.asmx HTTP/1.1
User-Agent: kSOAP/2.0
SOAPAction: http://temphost.org/RetrieveConfiguration
Content-Type: text/xml
Connection: close
Content-Length: 464
Host: temp.host.com
Accept-Encoding: gzip 通过GPRS:
POST /ODP/Services.asmx HTTP/1.1
Accept-Encoding: deflate, gzip, identity
Content-Length: 464, 464
Content-Type: text/xml, text/xml
Host: temp.host.com
SOAPAction: http://temphost.org/RetrieveConfiguration
User-Agent: kSOAP/2.0
X-WAP-WTLSEncryptiontype: NONE
X-WAP-Bearerinfo: W-HTTPS=FALSE, bearertype=0
Via: W-HTTP/1.1 wgw-fe6 EMIG 5.1
x-msisdn: <User Phone number>
x-up-calling-line-id: <User Phone number>
x-technology-stack: Unknown
TE: trailers
Connection: TE 我不能理解在Content-Type和Content-Length头的请求中如何以及在何处添加多个值。
有没有人能告诉我WAP连接出了什么问题,或者是在修改WAP请求时在运营商端添加了WAP连接。
发布于 2012-12-06 20:43:21
遗憾的是,在客户端(客户/电话/浏览器)上没有什么可做的,但是有一些可能的场景来获得解决方案的方法。如果您是web开发人员(VASP侧),则需要注意URL/URI大小,以防止POST需要多个数据包。如果你是网络服务器管理者(VASP/telco端),你可以定义这些特定的报头(当相等时)将接受多个值。在这种情况下,你需要意识到你将把你的服务器置于.in响应分离攻击的风险之下。如果您是代理管理员(Telco端),您可以调整GW以丢弃额外的报头,而不是将它们合并到包含多个值的一个报头中,但在这种情况下,您需要知道您将不再符合RFC建议。
发布于 2012-12-05 23:11:07
如果POST因为其扩展而被截断并需要多个数据包,则content-length和content-type字段将重复。
WGW通过将它们合并到一个包含多个值(用逗号分隔)的标头中解决了这种情况,问题是这个包含多个值的标头会生成HTTP 411错误代码。
根据最新的RFC草案,必须丢弃此流量,错误代码为502,但可以使用一些解决方法来删除其中一个报头,而不是合并它们,以便使此事务保持在进行中。
https://stackoverflow.com/questions/13643368
复制相似问题