我的瀏覽器(Firefox 21,IE10)有一個代理服務器設置。奇怪的是每當有&#3 9; (請忽略這些空格),瀏覽器將不會再發送它,以及之後的任何內容。'之後的所有內容都不會被瀏覽器發送
最初我以爲這是代理服務器的問題,所以我編寫了一個簡單的套接字服務器,並嘗試查看瀏覽器發送的內容(見下文)。當我通過代碼進行調試時,它證明瀏覽器確實不會發送'以及之後的所有內容。任何人都曾經見過?這是爲什麼發生?
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;,它只是存在,這樣它會顯示此頁上:
WWW .test.com /去&#3 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
Accept:text/html,application/xhtml + xml,application/xml; q = 0.9,/; q = 0.8
Accept-Language:zh-CN en ; q = 0.5
接受編碼:gzip,deflate
連接:保持活動
請注意請求行。我真的無法解釋這...