【问题标题】:Azure Web App HTTP ERROR 414 - Url too long requestAzure Web App HTTP ERROR 414 - 请求的 URL 太长
【发布时间】:2022-01-12 15:43:24
【问题描述】:

我们的 Dot Net Core 5 托管在 Linux Azure Web App 上,其中包含 Angular 12 Web 应用程序。

this.router.navigate([]).then((result) => {
            window.open('/flight/flight-book?flightdata=' + encodeURIComponent(this.encryptData(hiddenvalue)), '_blank');
        });

现在上面的代码在浏览器上运行得到一个错误 - HTTP ERROR 414 - URL Too Long 但在 localhost 中运行它工作正常。

我们认为 azure Web 应用正在停止此 URL 以在浏览器上呈现。即使在 web.config 上,我们也提到了以下代码,但仍然无法正常工作。

<system.webServer>
    <!--   Here you have other settings related to handlers.-->
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="10485760" maxUrl="1000241" maxQueryString="3002768" />
      </requestFiltering>
    </security>
  </system.webServer>

【问题讨论】:

  • 使用表达式'/flight/flight-book?flightdata=' + encodeURIComponent(this.encryptData(hiddenvalue)) 生成的导致414 错误的URL 的实际长度是多少?
  • 是的,长度是一个很长的加密字符串——但是在 localhost 上运行一切都很好,只有在 azure web 应用程序上部署后才能获得 HTTP 414。

标签: angular azure .net-core


【解决方案1】:

我通过localStorage API 解决了这个问题,最后,我可以跨应用程序处理多个页面的长文本值。

localStorage.setItem("flightinfo", JSON.stringify(this.countries));//set value
localStorage.getItem('flightinfo' + paramGuid);//get value

它对我有用,谢谢。

【讨论】:

    【解决方案2】:

    适用于 Linux 的 Azure 应用服务在容器中运行,因此如果你向应用服务发送 HTTP 请求,它首先由 Azure 上不受你控制的反向代理服务器处理,然后请求被转发到应用程序中的应用程序。容器。您的 web.config 对反向代理没有影响,这是强制执行 URL 限制的组件。我刚刚对其进行了测试,似乎在 Linux 应用服务上仍然可以接受的最大查询长度是 8192 个字符

    在 Windows 应用服务上,默认限制为 2048 个字符,但在这里您可以直接控制服务器,因此web.config 像这样...

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
       <system.web>
          <httpRuntime maxUrlLength="32768" maxQueryStringLength="32768" />
       </system.web>
       <system.webServer>
          <security>
             <requestFiltering>
                <requestLimits maxQueryString="32768" />
             </requestFiltering>
          </security>
       </system.webServer>
    </configuration>
    

    ...将最大 URL 长度设置为 32768 个字符。

    正如您刚刚经历的那样,有时浏览器和服务器会定义您无法始终控制的 URL 或查询字符串限制 - 最好将较长的数据移动到 HTTP 正文。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多