【发布时间】:2021-05-21 04:28:49
【问题描述】:
我正在开发 .net core 3.1 api
调用 api 时出错。服务器响应 405
jquery.min.js:2 GET https://localhost:44345/api/Home/AddUpdateUser?callback=jQuery351026836393378483203_1613635815143&name=Ahsan&email=ahsan%40gmail.com&password=asdsdasda&_=1613635815145 net::ERR_ABORTED 405
这是我的 api 控制器类
public class HomeController : ControllerBase
{
private IRegisterUser _user;
private IMapper _mapper;
public HomeController(IRegisterUser user, IMapper mapper)
{
_user = user;
_mapper = mapper;
}
//api/Home
[HttpGet]
public IActionResult GetAllUser()
{
var users = _user.GetAllUser();
if (users != null)
{
var userVm = _mapper.Map<List<RegisterUserVm>>(users);
return Ok(userVm);
}
return Ok("Some error occured");
}
//api/Home
[HttpPost]
[Route("[action]")]
[Route("api/Home/AddUpdateUser")]
public IActionResult AddUpdateUser([FromBody] RegisterUserVm userVm)
{
//userVm.MacAddress = GetMacAddress();
var user = _mapper.Map<User>(userVm);
var msg = _user.AddUser(user);
string[] message = { "200", "testing" };
return Ok(message);
}
//api/Home/{id}
[HttpDelete]
public IActionResult DeleteUser(Guid Id)
{
var msg = _user.DeleteUser(Id);
return Ok(msg);
}
[HttpGet]
[Route("[action]")]
[Route("api/Home/GetUserById")]
public IActionResult GetUserById(Guid Id)
{
var user = _user.GetUserById(Id);
var userVm = _mapper.Map<RegisterUserVm>(user);
if (userVm != null)
return Ok(userVm);
return Ok("Some error occured");
}
}
这是我的 ajax 调用
<script>
$("#button").click(function (e) {
e.preventDefault()
var data = {
name: "Ahsan",
email: "ahsan@gmail.com",
password: "asdsdasda"
};
jQuery.support.cors = true;
$.ajax({
type: "POST",
dataType: 'jsonp',
url: "https://localhost:44345/api/Home/AddUpdateUser",
data: data,
contentType: "application/json; charset=utf-8",
success: function (result) {
debugger;
alert('ok');
},
error: function (result) {
debugger;
alert('error');
}
});
});
</script>
【问题讨论】:
-
您不能使用 JSONP 进行 POST。它根本不起作用,它会创建一个
-
当我将 jsonp 更改为 json 。它给了我这个错误核心策略错误在这里访问来自源'localhost:44399'的 XMLHttpRequest 在'localhost:44345/api/Home/AddUpdateUser'已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上没有“Access-Control-Allow-Origin”标头
-
嗨@Ahsan,我想你需要在这里查看我的答案:stackoverflow.com/questions/60875711/…。请务必在您的 web api 项目中添加 cors 支持。
标签: javascript c# asp.net-mvc asp.net-core .net-core