有一个应用程序 - 带有 api 控制器的 asp net core mvc(只是一个包含 post/get 方法的控制器)。有一个前台用 xmlhttprequest 调用这些方法。在本地(当我开发和测试时),get 和 post 方法的工作方式相同,在布置 get 方法工作之后,但是在调用 post 404 时出错。因此,从邮递员那里一切正常。
控制器看起来像这样
[Route("api")]
public class ApiController : Controller
{
[HttpPost]
[Route("someMethod")]
public JsonResult Method() { ... }
}
调用此方法的js代码
function DoXhrPostJson(model, url) {
var result = document.getElementById("container");
var xhr = new XMLHttpRequest();
xhr.open("POST", url);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(JSON.stringify(model));
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
AddToResult(xhr.responseText);
} else {
result.innerText = xhr.status + ': ' + xhr.statusText;
}
}
}
网址似乎通过了有效,http://some.site.ru/api/testing
. 当通过此 url 向邮递员请求时,一切正常。获取方法没有问题。有什么问题?
Cors 允许这样,在 ConfigureServices 的 StartUp 文件中做了services.AddCors()
然后在 configure{
builder.AllowAnyOrigin();
builder.AllowAnyHeader();
builder.AllowAnyMethod();
});
问题出在cors中,补充说
和
app.UseCors("AllowSpecificOrigin");