【发布时间】:2013-06-18 15:09:32
【问题描述】:
我为我的浏览器(Firefox 21、IE10)设置了代理服务器。奇怪的是,只要有 3 9 ; (请忽略请求URL中的空格),浏览器将不会发送它以及之后的任何内容。
最初我认为这是代理服务器的问题,所以我编写了一个简单的套接字服务器并尝试查看浏览器发送的内容(见下文)。当我通过代码进行调试时,它证明浏览器确实没有发送 ' 以及之后的所有内容。有人见过这个吗?为什么会这样?
nFd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if(nFd < 0) break;
sockaddr_in addr = {0};
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl(INADDR_ANY);
addr.sin_port = htons(7995);
int nAddrLen = sizeof(addr);
if(0 != ::bind(nFd, (const sockaddr*)&addr, nAddrLen))
break;
if(0 != listen(nFd, 64))
break;
nClientFd = accept(nFd, (sockaddr*)&addr, &nAddrLen);
if(nClientFd < 0) break;
char buf[16384] = {0};
int nBytesRead = recv(nClientFd, buf, 16384, 0);
if(nBytesRead <= 0) break;
cout << buf << endl;
这是我在地址栏输入的请求(忽略 & # 3 9 ; 中的空格,它只是为了显示在此页面上:
www.test.com/go 9;大部头
这是我通过套接字收到的请求:
GET http://www.test.com/go& HTTP/1.1
主持人:www.test.com
用户代理:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0
接受:text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
接受语言:en-US,en;q=0.5
接受编码:gzip、deflate
连接:保持活动
注意请求行。我真的无法解释这个......
【问题讨论】: