$http.delete 在 angularJS 中抛出错误
$http.delete throwing error in angularJS
我正在 api 调用这样的 Delete
方法 -
$http.delete('http://localhost:45467/api/v1/proddetails/' + prodId, null )
.success(function (data, status, headers, config) {
if(data.status == "200")
{
console.log('data deleted');
}
deferred.resolve(data);
})
.error(function (data, status, headers, config) {
console.log("some error occurred");
deferred.reject(data);
});
删除端点如下所示 -
[HttpDelete]
public HttpResponseMessage Delete(int productId)
当我 运行 这个并查看 Chrome 控制台时,我看到了这个错误 -
OPTIONS http://localhost:45467/api/v1/proddetails/34
(index):1 XMLHttpRequest cannot load
http://localhost:45467/api/v1/proddetails/34. No 'Access-Control-Allow-
Origin' header is present on the requested resource. Origin
'http://localhost:5100' is therefore not allowed access. The response had
HTTP status code 405.
似乎无法弄清楚这里出了什么问题。其他 Get 和 Post 请求工作正常。如何解决这个问题?
Note1: 我已经启用了 CORS -
[EnableCors(origins: "*", headers: "*", methods: "*")]
Note2:我正在使用 interceptors
为每个请求添加一个授权令牌。我不确定这是否会导致任何问题。
Note3: 这是我在 asp.net webapiconfig 文件中定义路由的方式 -
config.Routes.MapHttpRoute(
name: "ProdApi",
routeTemplate: "api/v1/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
提前致谢。
您正在向与您的网页所在的域不同的域执行 HTTP 请求。出于安全原因,浏览器正在阻止它。
No 'Access-Control-Allow-Origin' header is present on the requested resource.
This 问题解释了如何使 DELETE
http 请求与 asp.net-web-api
一起工作。
我终于明白问题出在哪里了。实际上这个 post 很有帮助 -
PUT and Delete not working with ASP.NET WebAPI and Database on Windows Azure
我只需要将 productId
参数替换为 id
- 它存在于 webapiconfig 配置中。我不确定为什么会这样。理想情况下,我应该能够为参数添加任何名称,而不受我在路由中添加的名称的约束。希望有人能解释一下。
将$http.delete()
更改为$http.del()
我正在 api 调用这样的 Delete
方法 -
$http.delete('http://localhost:45467/api/v1/proddetails/' + prodId, null )
.success(function (data, status, headers, config) {
if(data.status == "200")
{
console.log('data deleted');
}
deferred.resolve(data);
})
.error(function (data, status, headers, config) {
console.log("some error occurred");
deferred.reject(data);
});
删除端点如下所示 -
[HttpDelete]
public HttpResponseMessage Delete(int productId)
当我 运行 这个并查看 Chrome 控制台时,我看到了这个错误 -
OPTIONS http://localhost:45467/api/v1/proddetails/34
(index):1 XMLHttpRequest cannot load
http://localhost:45467/api/v1/proddetails/34. No 'Access-Control-Allow-
Origin' header is present on the requested resource. Origin
'http://localhost:5100' is therefore not allowed access. The response had
HTTP status code 405.
似乎无法弄清楚这里出了什么问题。其他 Get 和 Post 请求工作正常。如何解决这个问题?
Note1: 我已经启用了 CORS -
[EnableCors(origins: "*", headers: "*", methods: "*")]
Note2:我正在使用 interceptors
为每个请求添加一个授权令牌。我不确定这是否会导致任何问题。
Note3: 这是我在 asp.net webapiconfig 文件中定义路由的方式 -
config.Routes.MapHttpRoute(
name: "ProdApi",
routeTemplate: "api/v1/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
提前致谢。
您正在向与您的网页所在的域不同的域执行 HTTP 请求。出于安全原因,浏览器正在阻止它。
No 'Access-Control-Allow-Origin' header is present on the requested resource.
This 问题解释了如何使 DELETE
http 请求与 asp.net-web-api
一起工作。
我终于明白问题出在哪里了。实际上这个 post 很有帮助 - PUT and Delete not working with ASP.NET WebAPI and Database on Windows Azure
我只需要将 productId
参数替换为 id
- 它存在于 webapiconfig 配置中。我不确定为什么会这样。理想情况下,我应该能够为参数添加任何名称,而不受我在路由中添加的名称的约束。希望有人能解释一下。
将$http.delete()
更改为$http.del()