【问题标题】:URL limits in http.sys for query parameters in GET requestshttp.sys 中 GET 请求中查询参数的 URL 限制
【发布时间】:2020-11-05 01:38:09
【问题描述】:

虽然 http.sys has limit 上的 UrlSegmentMaxLength 默认为 260,但我找不到它是否适用于 URL 查询参数部分。例如,当我将 WCF 服务托管为 WebServiceHost w/o IIS 时,每个分段长度超过 260 个字符的请求都会失败,并出现 400 错误。所以,我的第一印象是它必须也适用于查询参数。 但是,经过几次实验后,我认为它不会影响它。使用参数成功通过的测试比默认最大值更长。所以,我想知道UrlSegmentMaxLength 是否会影响查询部分?那么如果不是,那么是什么参数(如果有的话)对此负责,这些限制是什么?

换句话说,为什么下面的请求会因为超过 Windows 设置中允许的字符数而导致400 Bad Request

HTTP GET http://my.com/foo/very-long-segment-5k-chars?arg=1

但是这个工作正常:

HTTP GET http://my.com/foo?arg=very-long-argument-5k-chars

【问题讨论】:

    标签: c# .net windows http wcf


    【解决方案1】:

    WCF 中出现 400 Bad Request 通常有两个原因。如果请求的http动词错误会出现400 Bad Request,如果请求格式错误会出现400 Bad Request。根据您的描述,这可能是URL格式不正确造成的,您可以尝试启用帮助文档查看正确的请求路径。

    这是我们要请求服务的URL,一定要确保按照这个URL格式发送请求,否则会出现400 Bad Request。

    要启用帮助文档,我们需要在配置文件中添加如下配置:

    <endpointBehaviors>  
       <behavior name="RESTEndpointBehavior">  
          <webHttp enableHelp="true"/>  
       </behavior>  
    </endpointBehaviors>  
    

    【讨论】:

      猜你喜欢
      • 2015-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-22
      相关资源
      最近更新 更多