我正在使用C#进行HTTPS POST请求(与HTTP相同的问题)
byte[] byteArray = Encoding.UTF8.GetBytes("var1=blah&var2=hah");
HttpWebRequest request = (HttpWebRequest)(WebRequest.Create("https://www.example.com"));
request.Credentials = CredentialCache.DefaultCredentials;
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
request.Method = "POST";
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
Run Code Online (Sandbox Code Playgroud)
当我不需要通过代理时,前面的代码在.NET和Mono中都很有效.当我必须使用代理时,它在.NET上运行时有效,但在Mono中失败并出现以下情况
WebException: Error: NameResolutionFailure
at System.Net.HttpWebRequest.EndGetRequestStream (IAsyncResult asyncResult) [0x00000] in <filename unknown>:0
at System.Net.HttpWebRequest.GetRequestStream () [0x00000] in <filename unknown>:0
Run Code Online (Sandbox Code Playgroud)
此外,在具有相同代理配置的浏览器中运行也可正常工作.任何理由为什么Mono会抛出一个NameResolutionFailure而.NET却没有?
有一个类似的stackoverflow问题,在创建请求时使用直接ip,然后将域添加到request.Host.但是,我必须经历的代理拒绝这种请求.救命!
操作系统是Windows 7,单声道版本是2.6.5
我知道在使用标准http时,引用标头对于欺骗是微不足道的.但是,当使用https时,您是否可以信任引用者,还是可能伪造的?