2013-06-18 70 views
0

我的瀏覽器(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
連接:保持活動

請注意請求行。我真的無法解釋這...

回答

0

#字符在HTTP/HTTPS URL中保留並標記URL的fragment組件的開頭。這部分HTTP/HTTPS URL永遠不會發送到服務器。如果您希望將#字符和後續信息發送到服務器,則#必須URLEncoded爲%23。

相關問題