即使我在我的控制器中启用了CORS,但是我收到了这个错误。 无法加载资源:服务器响应状态为405(方法不允许)
我试图通过ajax调用将表单数据发布到控制器。
var data = $.param({
emailId: $scope.txtEmailAddr,
passwd: $scope.txtPswd
});
var config = {
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'
}
}
$http.post('../api/login/1', data)
.success(function (data, status, headers, config) {
alert("Success" + data);
$state.go('app.dashboard.v2');
})
.error(function (data, status, header, config) {
alert("Error");
});
这是在浏览器上输入的网址: 的 http://localhost:27622/template_content_angularjs/index.html#/member/login/v2 此页面有一个提交按钮,单击它时,它调用ajax调用并在内部尝试调用控制器api。这给出了上述错误。
当我通过浏览器调用我的控制器时,它会成功运行并返回如下数据: 控制器网址通过浏览器进行调用: http://localhost:27622/api/login/1
控制器返回的数据。
<Login xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/kindergarten.template_content_angularjs.Models">
<Password>Adnan@123</Password>
<UserName>Adnan1</UserName>
<id>1</id>
</Login>
这是控制器代码。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using kindergarten.template_content_angularjs.Models;
using System.Web.Http.Cors;
namespace kindergarten.template_content_angularjs.controllers
{
[EnableCors(origins: " http://localhost:27622", headers: "*", methods: "*")]
public class LoginController : ApiController
{
Login[] ArrLogin = new Login[]
{
new Login { id=1, UserName = "Adnan1", Password = "Adnan@123" },
new Login { id=2, UserName = "Adnan2", Password = "Adnan@123" },
new Login { id=3, UserName = "Adnan3", Password = "Adnan@123" }
};
public IEnumerable<Login> GetAllLogins()
{
return ArrLogin;
}
public IHttpActionResult GetLogin(int id)
{
var product = ArrLogin.FirstOrDefault((p) => p.id == id);
if (product == null)
{
return NotFound();
}
return Ok(product);
}
}
}
我已阅读过CORS,但仍然无法理解,虽然我在同一台服务器上调用,但我得到了上面提到的错误。我也在控制器中启用了CORS。
答案 0 :(得分:1)
嗯@Musa虽然说ajax请求是POST方法的正确的事情。问题出在我的控制器上,我没有处理POST方法。 解决方案是
public string Post([FromBody] string value)
{
return value;
}
处理post方法。控制器上没有用于处理POST方法的API。它只处理Get方法。
对不起,请大家帮忙。希望这能帮助像我这样的其他新手。