通过GPRS / WAP连接时,在http请求标头中看到多个值

时间:2012-11-30 10:29:27

标签: android web-services http soap wap

当我通过wifi向Web服务发出请求时,一切都运行良好,但是在具有WAP连接的GPRS上也是如此(我没有以任何方式强制连接成为WAP,这可能与运营商有关。在阿根廷进行测试)服务器在Content-Type&中接收重复值。内容长度。

以下是首先通过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&amp ;;的请求中如何以及在何处添加多个值。 Content-Length标题。

有人可以告诉我WAP连接有什么问题,或者在修改WAP请求时是否在运营商端添加。

2 个答案:

答案 0 :(得分:2)

如果由于其扩展而截断POST并且需要多个数据包,则内容长度和内容类型字段会重复。

WGW通过将它们合并为一个包含多个逗号分隔值的标头来解决这种情况,问题是这个包含多个值的标头会生成HTTP 411错误代码。

根据最新的RFC草案,必须使用错误代码502丢弃此流量,但有些解决方法旨在删除其中一个标头而不是合并它们以便保持此事务正在进行中。

答案 1 :(得分:2)

可悲的是,客户端(客户/电话/浏览器)无需做任何事情,但有一些可能的方案来获得解决方案的方法。 如果您是Web开发人员(VASP端),则需要注意URL / URI大小,以防止POST需要多个数据包。 如果您是Web服务器管理器(VASP / Telco端),您可以定义这些特定标头将接受多个值(如果相同)。在这种情况下,您需要知道您要将服务器放在HTTP响应分裂攻击的风险。 如果您是代理管理员(Telco方面),您可以调整您的GW以丢弃额外的标头,而不是将它们合并到包含多个值的一个标头中,但是,在这种情况下,您需要知道您将脱离RFC recomendations