三略 2025-10-12 12:43 采纳率: 57.1%
浏览 42

C# 如何忽略http响应头错误?

使用过各种AI工具,给出的方案均无法解决

项目1

string framework = RuntimeInformation.FrameworkDescription;
// 获取.NET版本=.NET Framework 4.8.9310.0
Version version = Environment.Version;
//4.0.30319.42000

另一个项目2

string framework = RuntimeInformation.FrameworkDescription;
// 获取.NET版本=.NET 8.0.18
Version version = Environment.Version;
// 获取CLR版本 8.0.18
执行同一段代码

使用同一段代码,参数也一样,地址也一样

AppContext.SetSwitch("System.Net.Http.UseStrictHttpHeaders", false);
string retString = "";
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:7999/api/app_print");

request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = Encoding.UTF8.GetByteCount("VER_ID=00&TASK_ID=0&CMD_ID=00&TYPE=04");
request.ServicePoint.Expect100Continue = false;
request.KeepAlive = false;
request.Timeout = 6000;

Stream myRequestStream = request.GetRequestStream();
StreamWriter myStreamWriter = new StreamWriter(myRequestStream);

myStreamWriter.Write("VER_ID=00&TASK_ID=0&CMD_ID=00&TYPE=04");
myStreamWriter.Close();

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string encoding = response.CharacterSet.Trim();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding(encoding));

retString = myStreamReader.ReadToEnd();

myStreamReader.Close();
myResponseStream.Close();
}
catch (Exception e)
{
retString = e.Message;
retString = "";
}

项目1获取结果正常,能够正常获取响应数据 如下

img

项目2报错

System.Net.WebException:“Received an invalid header line: 'Access-Control-Allow-Methods??"POST, GET, OPTIONS, DELETE"
'.”

HttpRequestException: Received an invalid header line: 'Access-Control-Allow-Methods??"POST, GET, OPTIONS, DELETE"
'.

img

已经使用过deepseek chatGTp等AI ,给出方案均无法解决

  • 写回答

6条回答 默认 最新

  • 阿里嘎多学长 2025-10-12 12:43
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    解决方案

    你可以使用 HttpClientDefaultRequestHeaders 属性来忽略 HTTP 响应头错误。具体代码如下:

    using System.Net.Http;
    using System.Net.Http.Headers;
    
    // ...
    
    var client = new HttpClient();
    client.DefaultRequestHeaders.IfModifiedSince = DateTime.MinValue;
    client.DefaultRequestHeaders.IfModifiedSince = DateTime.MinValue;
    
    var response = await client.GetAsync("你的URL");
    

    或者使用 ServicePointManager 来设置忽略 HTTP 响应头错误:

    using System.Net;
    
    // ...
    
    ServicePointManager.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => true;
    

    注意

    上述代码可能会导致安全问题,请根据实际情况选择合适的解决方案。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月12日