我们的项目包括客户端(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控制器的原因
提前感谢您的任何澄清。
答案 0 :(得分:0)
据我了解,您只想澄清为什么将Location标头添加到Ajax响应中。
通常情况下,位置标题用于重定向响应(http://en.wikipedia.org/wiki/HTTP_location),虽然在这种情况下我觉得可能后端很老了?也许客户端没有Ajax开始,而Location用于将浏览器重定向到新更新/添加的实体。
这可能是分裂前端/后端团队的经典案例。后端不太了解前端,反之亦然。后端始终添加了Location,因为之前是Web应用程序的构建方式,重定向到新资源。因此,根据旧习惯或文档,后端团队认为他们仍然需要Location标题,因为他们从未真正知道它到达客户端时所做的事情。我并不是说这是这种情况,而只是从经验谈起: - )
尽管Ajax调用不需要它是完全正确的,除非ajax响应抓住该标头并将其用于某些奇怪的原因!