首页 文章

CloudFlare从Web API V2服务器更改WebApi用户友好的ResponseText / StatusCode / ReasonPhrase

提问于
浏览
0

使用Web API V2,作为Azure Web App托管,CloudFlare打开,ReasonPhrase(a.k.a StatusText,ResponseText)不会返回给客户端 .

ReasonPhrase在ExceptionFilterAttribute中设置,如下所示:

public override void OnException(HttpActionExecutedContext context)
{
        //...code removed for brevity

        var ex = context.Exception;
        context.Response = new HttpResponseMessage(ex.StatusCode)
        {
            ReasonPhrase = GetUserFriendlyMessage(ex),
        };
}

这在本地工作,并且当绕过CloudFlare时 . 但是,当CloudFlare处于活动状态时 .

为什么CloudFlare会将其删除,如何禁用它或者应该以不同的方式处理用户友好的API错误消息?

1 回答

  • 0

    通过将用户友好的错误消息移动到请求的主体,而不是reasonPhrase,我能够解决此问题 . 据推测,CloudFlare或Azure不喜欢更长的ReasonPhrase ...

    新的OnException方法:

    public override void OnException(HttpActionExecutedContext context)
    {
        //...code removed for brevity
    
        var ex = context.Exception;
        context.Response = request.CreateResponse(ex.StatusCode, new
        {
           message = friendlyMessage,
        });
    }
    

相关问题