响应中ajax调用的标头位置

时间:2014-07-31 10:16:49

标签: asp.net ajax asp.net-web-api

我们的项目包括客户端(knokout)和服务器端(ASP.Net MVC和WebAPI)两部分。

客户端通常调用Web API来获取/创建/更新服务器上的数据。 我们以下面的方式处理它(更新的例子)

public HttpResponseMessage UpdateEntity(EntityWE entity)
{

    HttpResponseMessage response;

    try
    {
        var updateEntity = this.someBl.UpdateEntity(entity);

        response = Request.CreateResponse(HttpStatusCode.Created, updateEntity);
        response.Headers.Location = new Uri(Url.Link(WebApiRoutNames.CustomApi, new { id = updatedEntity.PageId }));

    }
    catch (Exception ex)
    {
        Logger.Error(ex);
        response = Request.CreateResponse(HttpStatusCode.InternalServerError);
    }

    return response;
}

问题是为什么我们需要发送标头位置以响应ajax调用? response = Request.CreateResponse(HttpStatusCode.Created, updateEntity)还不够吗?

我们不会使用任何重定向来响应ajax调用

P.S。所有写这篇文章的人都很远......我无法理解它被添加到所有Web API控制器的原因

提前感谢您的任何澄清。

1 个答案:

答案 0 :(得分:0)

据我了解,您只想澄清为什么将Location标头添加到Ajax响应中。

通常情况下,位置标题用于重定向响应(http://en.wikipedia.org/wiki/HTTP_location),虽然在这种情况下我觉得可能后端很老了?也许客户端没有Ajax开始,而Location用于将浏览器重定向到新更新/添加的实体。

这可能是分裂前端/后端团队的经典案例。后端不太了解前端,反之亦然。后端始终添加了Location,因为之前是Web应用程序的构建方式,重定向到新资源。因此,根据旧习惯或文档,后端团队认为他们仍然需要Location标题,因为他们从未真正知道它到达客户端时所做的事情。我并不是说这是这种情况,而只是从经验谈起: - )

尽管Ajax调用不需要它是完全正确的,除非ajax响应抓住该标头并将其用于某些奇怪的原因!