HTTP HEAD方法通过代理归零内容长度

时间:2018-03-14 21:29:04

标签: azure azure-functions

我使用访问Blob存储的HTTP触发器功能创建了一个文件服务器。这很好,文件是使用HTTP GET提供的。

但是,我想实现一个HTTP HEAD方法响应,以确定文件的大小。这在直接调用时也可以正常工作,但在通过代理调用时则不行,在这种情况下,Content-Length返回为0

我创建了一个简化示例来演示问题

功能代码

{
    "$schema": "http://json.schemastore.org/proxies",
    "proxies": {
        "HeadTestProxy": {
            "matchCondition": {
                "route": "/proxy/HeadTest",
                "methods": [
                    "HEAD"
                ]
            },
            "backendUri": "https://localhost/api/HeadTest"
        }
    }
}

代理定义

cache-control →no-cache
content-length →1234
date →Thu, 15 Mar 2018 09:36:10 GMT
expires →-1
pragma →no-cache
server →Microsoft-IIS/10.0
x-header-test →true
x-powered-by →ASP.NET 

功能响应

cache-control →no-cache
content-length →0
date →Thu, 15 Mar 2018 09:36:06 GMT
expires →-1
pragma →no-cache
server →Microsoft-IIS/10.0
x-header-test →true
x-powered-by →ASP.NET

代理响应

RT

进一步说明

我还尝试将长度放在自定义标题中,然后将其复制到代理的响应覆盖中的原始Content-Length标头中,但这也导致了0

1 个答案:

答案 0 :(得分:1)

  

content-length是一个内容标题,因此只能添加到内容标题集合

我已经创建了一个测试演示,我也遇到了和你一样的问题。 Content-Length无法传递给代理响应头。我想这是一个错误。关于Azure功能中的代理的文章很少。特别是对于http头。我建议你把这个问题发给github。