如何在浏览器中向 ASP.NET (.NET FRAMEWORK) 中的 DELETE http 方法发出请求
How make a request in the browser to a DELETE http method in ASP.NET (.NET FRAMEWORK)
在 laravel
或某些 express.js
库中添加中间件来检查是否给定了一个名为 _Method
的字段,这将在服务器到达时覆盖 http 请求的实际 http 方法, 因为浏览器只支持 POST
和 GET
.
ASP.NET (.NET Framework)
是否包含我刚才提到的内置中间件,我在网上找不到任何东西。
如果有的话,我怎么用或者你知道这样的文章吗
如果没有,我如何自己创建这样的中间件。
我无法自己创建一个,因为 HttpContext
中的 HttpRequest
是 readonly
而 HttpRequest
中的 HttpMethod
也是 readonly
。
或者是使用 preventDefault()
and/or ajax
发送(例如)通过 javascript
的 DELETE
请求的唯一选择?
首先,您需要将 [HttpDelete] 属性分配给您在控制器或 API 中的函数。例如:
[HttpDelete]
public JsonResult MyDeleteFunction(int id)
{
//Write your delete code here
return Json("some responses");
}
然后在客户端,你可以使用ajax来做删除请求。
$.ajax({
url: '/ControllerName/MyDeleteFunction',
dataType: "json",
type: "DELETE",
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({id: 123}),
async: true,
processData: false,
cache: false,
success: function (data) {
alert(data);
},
error: function (xhr) {
alert('error');
}
});
经过一番挖掘,我发现后面在ASP.NET
的链中,HttpContext
变成了HttpContextBase
。此上下文包含 GetHttpMethodOverride()
.
我在 github 上查找了该方法,因为它是 open source 并且 ASP.NET
确实包含上述的中间件。
您可以使用 Header
、Form
或 Query string
中的键 X-HTTP-Method-Override
覆盖实际的 http 方法,对于中间件,实际的 http 方法必须是 POST
甚至考虑覆盖 http 方法。
在 laravel
或某些 express.js
库中添加中间件来检查是否给定了一个名为 _Method
的字段,这将在服务器到达时覆盖 http 请求的实际 http 方法, 因为浏览器只支持 POST
和 GET
.
ASP.NET (.NET Framework)
是否包含我刚才提到的内置中间件,我在网上找不到任何东西。
如果有的话,我怎么用或者你知道这样的文章吗
如果没有,我如何自己创建这样的中间件。
我无法自己创建一个,因为 HttpContext
中的 HttpRequest
是 readonly
而 HttpRequest
中的 HttpMethod
也是 readonly
。
或者是使用 preventDefault()
and/or ajax
发送(例如)通过 javascript
的 DELETE
请求的唯一选择?
首先,您需要将 [HttpDelete] 属性分配给您在控制器或 API 中的函数。例如:
[HttpDelete]
public JsonResult MyDeleteFunction(int id)
{
//Write your delete code here
return Json("some responses");
}
然后在客户端,你可以使用ajax来做删除请求。
$.ajax({
url: '/ControllerName/MyDeleteFunction',
dataType: "json",
type: "DELETE",
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({id: 123}),
async: true,
processData: false,
cache: false,
success: function (data) {
alert(data);
},
error: function (xhr) {
alert('error');
}
});
经过一番挖掘,我发现后面在ASP.NET
的链中,HttpContext
变成了HttpContextBase
。此上下文包含 GetHttpMethodOverride()
.
我在 github 上查找了该方法,因为它是 open source 并且 ASP.NET
确实包含上述的中间件。
您可以使用 Header
、Form
或 Query string
中的键 X-HTTP-Method-Override
覆盖实际的 http 方法,对于中间件,实际的 http 方法必须是 POST
甚至考虑覆盖 http 方法。