Предположим, что у вас есть ответ, но в интересах поисковиков у меня была такая же проблема со стандартным руководством по .NET Core Cors .
Одна из многих ошибок:
XMLHttpRequest не может загрузить localhost: 64633 / api / blogs. Ответ на запрос перед полетом не проходит проверку контроля доступа. Нет заголовка «Access-Control-Allow-Origin» на запрошенном ресурсе. Происхождение localhost: 56573 ', следовательно, не допускается. В ответе был код статуса HTTP 500.
После игры работал следующий код. Полный класс опубликован ниже, чтобы понять, что происходит.
EnableCorsAttribute
Чтобы использовать его, вы можете добавить либо на контроллер, либо на метод. например[EnableCors("SiteCorsPolicy")] [Route("api/[controller]")] public class BlogsController : Controller { }
// POST api/value
[EnableCors("SiteCorsPolicy")]
[HttpPost]
public HttpResponseMessage Post([FromBody]Blog value)
{
// Do something with the blog here....
var msg = new HttpResponseMessage(System.Net.HttpStatusCode.OK);
return msg;
}
или
function HandleClick() {
var entityData = {
"blogId": 2,
"url": "http://blog.com/blog1",
"posts": [
{
"postId": 3,
"title": "Post 1-1",
"content": "This is post 1 for blog 1",
"blogId": 2
},
{
"postId": 4,
"title": "Post 1-2",
"content": "This is post 2 for blog 1",
"blogId": 2
}
]
};
$.ajax({
type: "POST",
url: "http://localhost:64633/api/blogs",
async: true,
cache: false,
crossDomain: true,
data: JSON.stringify(entityData),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (responseData, textStatus, jqXHR) {
var value = responseData;
},
error: function (responseData, textStatus, errorThrown) {
alert('POST failed.');
}
});
}
Когда я вызвал это, используя следующий код (используя стандартный js / jQuery для простого копирования и вставки), связь перестала быть отклонена.
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options => options.AddPolicy("AllowAll", p => p.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()));
services.AddMvc();
}
public void Configure(IApplicationBuilder app)
{
app.UseCors("AllowAll");
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}