【发布时间】:2016-02-18 13:17:03
【问题描述】:
我尝试使用带有 REST angular ($ http) 的 Web 服务。 GET 是可以的,但是当我尝试使用 $ http.put 进行更改时,出现以下错误:
XMLHttpRequest cannot load http://10.2.150.238:90/api/Collaborateurs/1. Response for preflight has invalid HTTP status code 405.
更新功能:
.factory('UpdateCollaborateur', function ($http, config) {
var fac = {};
fac.Update = function (matricule,collaborateur) {
return $http.put(config.apiUrl + 'Collaborateurs/'+ matricule, collaborateur);
};
return fac;
})
WEB API 2,放:
public IHttpActionResult PutCollaborateur(int id, Collaborateur collaborateur)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
if (id != collaborateur.matricule_collaborateur)
{
return BadRequest();
}
db.Entry(collaborateur).State = EntityState.Modified;
try
{
db.SaveChanges();
}
catch (DbUpdateConcurrencyException)
{
if (!CollaborateurExists(id))
{
return NotFound();
}
else
{
throw;
}
}
return StatusCode(HttpStatusCode.NoContent);
}
我的功能标题:
[ResponseType(typeof(void))]
这是什么问题?? 谢谢
【问题讨论】:
-
你们有什么restfull服务?
-
我的服务:WEB API 2
-
错误信息有什么不清楚的地方?您的浏览器正在发出预检 OPTIONS 请求。服务器说 OPTIONS 请求不可接受。
-
@Quentin 提到的预检请求是 CORS 实现的一部分 - developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS。还值得一读 405 HTTP 代码的含义 - checkupdown.com/status/E405.html