http协议相关 (切记host域前不能有空格)

在实现HTTP下载模块时,遇到一个细节问题:HTTP 1.1版本的请求中,Host域前不能有空格,否则会导致400错误。这个小错误耽误了一天的时间。下面是一个简单的C++测试HTTP连接的程序示例,用于演示正确的请求构造。
摘要由CSDN通过智能技术生成

这两天在做微端,弄了下下载模块,采用的是http下载,传说迅雷等多线程下载也是利用http的分段传输的原理来做的。 http相对来说还是很简单的,没有什么需要说明的地方,但是有个小坑,之前跳进去耽搁了一天才爬出来。 


对于http1.0版本,无所谓的,随意写。基本上没什么要注意的地方。对于http1.1版本,记住host是必选域,在 host 前面不能有 *空格* ,否则会返回400语法错误的。在必选的method域和host域前面都不能有空格的, 简单的测试表明在可选域前有空格,是不会影响该域的。 另外记得最后的/r/n/r/n表示http头的结束。


下面是简单的测试程序

#include <stdio.h>
#include <WinSock2.h>
#include <string>


using namespace std;


int main(void)
{
    string str("GET /cvf.rar HTTP/1.1\r\nCache-Control:no-cache\r\nHOST:127.0.0.1\r\nACCEPT:*/*\r\n Range:10-\r\n\r\n");


    WSADATA     wsaData;
    WSAStartup(MAKEWORD(2,2), &wsaData);


    sockaddr_in     addr;
    addr.sin_family = AF_INET;
    addr.sin_port = htons(80);
    addr.sin_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值