【问题标题】:' and everything after that is not being sent by the browser' 之后的所有内容都不会由浏览器发送
【发布时间】: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
连接:保持活动

注意请求行。我真的无法解释这个......

【问题讨论】:

    标签: http browser proxy


    【解决方案1】:

    # 字符在 HTTP/HTTPS URL 中保留,并标记 URL 的 fragment 组件的开始。 HTTP/HTTPS URL 的这一部分永远不会发送到服务器。如果您希望将 # 字符和后续信息发送到服务器,则 # 必须 URL 编码为 %23。

    【讨论】:

      猜你喜欢
      • 2012-12-23
      • 2011-04-19
      • 1970-01-01
      • 2021-07-09
      • 2010-11-23
      • 2022-08-17
      • 2020-07-19
      • 1970-01-01
      • 2012-08-22
      相关资源
      最近更新 更多