具体来说,我是从node.js服务器的角度来谈论的。由于http.client
验证content-length
,因此很难在node.js中对此进行测试。
客户可以谎言身体的内容长度,至少在它到达http.createServer().on('request')
的时候?
content-length
的正文?我不认为这是可能的,因为它最有可能在解析器级别检查,但我想要证明。content-length
的正文?我认为这可能是真的。我担心可能不会使用行为良好的http客户端的恶意用户。
答案 0 :(得分:1)
当然有可能。您可以简单地打开TCP套接字连接到运行Web服务器的任何IP /端口,并在那里写下您想要的任何内容。当然,表现良好的客户不会这样做,但没有什么可以阻止客户这样做。
但是,这往往是您在服务器问题上使用的任何HTTP堆栈,在本例中是节点。它需要1)不要盲目地读入(巨大的)内容长度字节,因为这可能会使服务器崩溃并且2)确保(对于合理大小的请求)客户端没有说谎。
在节点的情况下,它在这里可见:https://github.com/joyent/node/blob/master/deps/http_parser/http_parser.c#L1471
试试吧,看看; - )
答案 1 :(得分:0)
取决于
当然你可以发送一个wring内容长度,问题是客户做了什么。
有脚本或服务器客户端可能会尝试下载您的内容并完全搞砸
大多数浏览器似乎都实现了一些容错行为,但是有很多不同的实现
我记得有一个旧的,即保持套接字打开永不关闭它。这最终导致了一个永无止境的页面加载
一些网景浏览器似乎完全依赖于正确的内容长度
一个好主意是留下内容。这应该适用于每个浏览器。