解决jq ajax 405,JQuery Ajax POST to Web API returning 405 Method Not Allowed
时间: 2023-07-04 21:25:19 浏览: 188
IOS开发之Post 方式获取服务器数据
4星 · 用户满意度95%
HTTP 405错误通常发生在使用Ajax调用Web API时,这是因为Web API默认情况下只支持GET和POST请求,而不支持PUT、DELETE、OPTIONS等请求方法。解决这个问题的方法是在Web API端添加一个处理OPTIONS请求的方法。
在Web API中,可以使用Web API的CORS功能来解决这个问题。CORS(跨域资源共享)是一种Web标准,允许在不同域名下的浏览器访问服务器资源。
为了启用CORS,需要在Web API项目中安装Microsoft.AspNet.WebApi.Cors NuGet包。然后,在WebApiConfig类中启用CORS:
```
using System.Web.Http;
using System.Web.Http.Cors;
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// 启用CORS
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
// ...其他配置
}
}
```
这里的“*”表示允许任何域名、任何方法、任何标头访问Web API。你也可以指定具体的域名、方法和标头。
在客户端使用Ajax时,需要设置withCredentials为true,这样才能在跨域请求时发送Cookies和认证信息。例如:
```
$.ajax({
type: "POST",
url: "http://example.com/api/resource",
data: JSON.stringify({data: "hello"}),
contentType: "application/json",
xhrFields: {
withCredentials: true
},
success: function(data) {
console.log(data);
},
error: function(xhr, status, error) {
console.log(xhr.responseText);
}
});
```
在这个例子中,我们向http://example.com/api/resource发送一个带有数据的POST请求,并设置withCredentials为true,以便发送Cookies和认证信息。如果请求成功,我们将收到响应数据,并将其打印到控制台中。如果请求失败,我们将打印xhr.responseText,这包含了服务器返回的错误信息。
希望这个解决方案可以帮助你解决问题!
阅读全文