清水鱼1984 2023-09-06 16:42 采纳率: 0%
浏览 5
已结题

访问Web服务器411长度报错

问题遇到的现象和发生背景 :

我司之前购买了一台RFID扫描设备,把扫描到的数据上传到云服务器,由于考虑数据隐私需要转到本地。供应商只要调用本地API即可,但是狮子大开口报价需要整个后台系统都需要部署到本地。所以我想修改API云地址,指向本地服务地址,在APIFox测试没有问题的情况下,直接使用扫描客户端POST 本地服务器,报错411,没有所需长度。发现是IIS问题中的Content-Length没有设置!现在在不能修改客户端的情况,有什么方法(或使用哪个Web服务器)绕过Content-Length访问到Web。

查到客户端一些代码,如果是Body是空,httpWebRequest.ContentLength就没有设定:
public static async Task<string> Request(string url, string body)
        {
            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
            httpWebRequest.AllowAutoRedirect = false;
            httpWebRequest.Method = "POST";
            httpWebRequest.Timeout = 5000;
            if (body.Length > 0)
            {
                byte[] btBodys = Encoding.UTF8.GetBytes(body);
                httpWebRequest.ContentLength = btBodys.Length;
                Stream requestStream = httpWebRequest.GetRequestStream();
                requestStream.Write(btBodys, 0, btBodys.Length);
                requestStream.Close();
            }
            HttpWebResponse httpWebResponse = (await httpWebRequest.GetResponseAsync()) as HttpWebResponse;

我想要达到的结果:

解决411报错的方法

  • 写回答

13条回答 默认 最新

  • bug菌¹ Java领域优质创作者 2023-09-06 16:51
    关注
    获得1.05元问题酬金

    如果不能修改客户端代码,可以考虑使用反向代理服务器来绕过Content-Length的限制。反向代理服务器可以接收客户端发来的请求,同时将请求转发到本地服务器,最后将响应返回给客户端。在转发请求的过程中,反向代理服务器可以自动计算Content-Length并添加到请求头中。常用的反向代理服务器有Nginx和Apache,你可以选择适合自己的服务器来实现反向代理。

    评论

报告相同问题?

问题事件

  • 系统已结题 9月14日
  • 创建了问题 9月6日

悬赏问题

  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂