确定请求者是否是Ajax调用和/或期望JSON(或其他内容类型)

时间:2016-02-17 17:31:05

标签: asp.net ajax asp.net-mvc

我已经解决了我在SO上找到的解决方案的问题,但我很好奇我的另一个想法是否像我想的那样糟糕。

我正在调试我们在/或在我们的几个控制器中的自定义安全属性。该属性当前使用RedirectResult重定向未授权用户。除了用Ajax调用方法时,这很好。在这些情况下,返回给我们的JS的错误包括我们的错误页面的所有HTML(我们重定向到的那个)的文本字符串以及HTTP代码和文本200 / OK。我使用this question答案中描述的“IsAjaxRequest”方法解决了这个问题。现在我完全能够以不同的方式响应Ajax调用。

然而,出于好奇,我想知道如果我通过以下方式解决问题,可能存在哪些陷阱。对我而言,这似乎是一个坏主意,但我无法弄清楚为什么......

ActionExecutingContext(“filterContext”)有一个HttpContext,其中有一个Request,后者又有一个AcceptTypes字符串集合。我注意到在我的Ajax调用中,期望JSON,filterContext.HttpContext.Request.AcceptTypes[0]的值是“application / json”。我想知道如果我要针对一个或多个预期的内容类型检查此字符串并相应地响应它们可能会出现什么问题。这会起作用,还是要求灾难?

1 个答案:

答案 0 :(得分:1)

我会说它完美无缺,而且我多年来一直在使用它。

整点使用请求标题是能够告诉服务器客户端接受和期望的内容。

我建议你在这里阅读更多关于Web API以及它如何使用该技术的内容。