0

我无法从 MVC 控制器中的响应标头中获取值。我触发了 azure 函数 HTTP 并尝试将值传递给具有 302 重定向的响应标头“ClientIPADDR:MYCustomHeaders”。那么如何从 MVC 控制器的响应头中读取值呢?

 Cache-Control:no-cache
    ClientIPADDR:MYCustomHeaders
    Content-Length:0
    Date:Mon, 22 Jan 2018 14:03:09 GMT
    Expires:-1
    Location:http://example-read-response-header.azurewebsites.net/home/index
    Pragma:no-cache
    Server:Microsoft-IIS/10.0
    X-AspNet-Version:4.0.30319
    X-Powered-By:ASP.NET

var ipAddress=Request.Headers["ClientIPADDR"];

Request.ServerVariables.Get("ClientIPADDR");

尝试了这个但无法获得价值。

编辑:附加信息

这是一个 azure 函数,它将使用给定的 URL 进行 302 重定向,该 URL 将显示带有azure 函数代理的谷歌验证码页面的 HTML 页面

    [FunctionName("TestFunction")]
    public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = "testExample/{token}")]HttpRequestMessage req, string token, TraceWriter log)
    {
        string ipAddress = string.Empty;
        if (req.Properties.ContainsKey("MS_HttpContext"))
        {
            ipAddress = ((HttpContextWrapper)req.Properties["MS_HttpContext"]).Request.UserHostAddress;
        }
        HttpResponseMessage errorResponse;
        errorResponse = req.CreateResponse(HttpStatusCode.Found);
        errorResponse.Headers.Add("ClientIPAddress", ipAddress);
        errorResponse.Headers.Location = new Uri("http://localhost:62418/Home/Index" + "?code=" + token);
        return errorResponse;
    }

此函数显示一个验证码 HTML 页面,其中包含 azure 代理路由以形成操作属性,该属性将重定向到控制器操作方法我试图获取客户端 IP 地址,但它给了我 azure 应用服务 IP 地址。

<form name="ad" id="form1" action="/validate" method="post">
        <main class="main-padding">
           //google captcha html
            </div>
        </main>
    </form>

不使用代理

<form name="ad" id="form1" action="http://example-read-response-header.azurewebsites.net/home/index" method="post">
            <main class="main-padding">
               //google captcha html
                </div>
            </main>
        </form>

上面的 POST 方法给出了正确的 IP 地址。如果我不想在 HTML 中显示 azure 的网站 URL 并使用代理,则会给我 azure 应用服务 URL。我尝试在标头中传递客户端 IP 地址,但控制器操作方法没有获得该标头(请求。标头 [“ClientIPAddress”])。有没有其他方法可以获取客户端的 IP 地址?

4

0 回答 0