如何解决收到无效的标头名称:“#<FCGI”在 c# 中,当我尝试从服务器获取数据时
我正在尝试从 C# 应用程序连接到 Web 服务器,我想从中获取值并将其保存到数据库中。该服务器有一个登录名,所以我试图复制浏览器行为,当我发送登录请求时,我收到一个异常 System.Net.Requests
消息:Received an invalid header name: '#
我尝试添加带有句子的标头:request.Headers.Add("#<FCGI:");
,但我收到一个新的 System.Net.WebHeaderCollection
异常,并显示以下消息:指定的值具有无效的 HTTP 标头字符。 (参数“名称”)。
我使用的代码如下:
HttpWebRequest request = (HttpWebRequest)WebRequest.CreateHttp($"http://{this.ipaddr}/app/app.app?cmd=authority_login&username=user&userpass=password");
request.KeepAlive = true;
request.ContentType="application/json";
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0";
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
request.Method = "GET";
request.Headers.Add("#<FCGI:");
WebResponse response1 = request.GetResponse();
我用服务器捕获了流量 Wireshark (picture here),完整的标题是
#<FCGI: :CGI:0x405b5068 @output_hidden=nil,@cookies={"sid"=>["ad7ee82e6731416ef7f1d0e80b266906"],"dispzone"=>["client"],"lang"=>["en"]},@args=nil,@multipart=false,@output_cookies=nil,@params={"username"=>["User"],"cmd"=>["authority_login"],"userpass"=>["espec"]},@request=#<FCGI::Request:0x405b5230 @id=1,@out=#<StringIO:0x405b50e0>,@in=#<StringIO:0x405b5170>,@data=#<StringIO:0x405b5140>,@env={"SERVER_NAME"=>"192.168.30.146","HTTP_HOST"=>"192.168.30.146","HTTP_ACCEPT"=>"text/html,*/*;q=0.8","HTTP_USER_AGENT"=>"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0","SERVER_PROTOCOL"=>"HTTP/1.1","HTTP_ACCEPT_LANGUAGE"=>"es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3","SERVER_SOFTWARE"=>"lighttpd/1.4.13","REMOTE_ADDR"=>"192.168.30.29","PATH_INFO"=>"","SERVER_ADDR"=>"192.168.30.146","SCRIPT_NAME"=>"/app/app.app","HTTP_UPGRADE_INSECURE_REQUESTS"=>"1","HTTP_COOKIE"=>"lang=en; dispzone=client; sid=ad7ee82e6731416ef7f1d0e80b266906","REMOTE_PORT"=>"51580","REQUEST_URI"=>"/app/app.app?cmd=authority_login&username=User&userpass=password","SERVER_PORT"=>"80","PATH"=>"/bin:/usr/bin:/sbin:/usr/sbin","DOCUMENT_ROOT"=>"/espec/html/","REQUEST_METHOD"=>"GET","SCRIPT_FILENAME"=>"/espec/html/app/app.app","GATEWAY_INTERFACE"=>"CGI/1.1","QUERY_STRING"=>"cmd=authority_login&username=User&userpass=password","REDIRECT_STATUS"=>"200","HTTP_ACCEPT_ENCODING"=>"gzip,deflate","HTTP_CONNECTION"=>"keep-alive"},@err=#<StringIO:0x405b50b0>>>
我收到来自 Wireshark 的警告消息,说在标题名称中发现了非法字符。有没有办法“跳过”这个标题,以便我的应用程序可以读取网络内容?
先谢谢你!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。