Я использую Web Core API и настроил CORS следующим образом:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors();
...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
var url = Configuration["origenUrl"];
var header = "Content-Type";
app.UseCors(
options => options.WithOrigins(url).WithHeaders(header).AllowAnyMethod().AllowCredentials()
);
}
Эта настройка отлично работает для запросов Get.
Но для моего запроса Put;
$.ajax({
url: url,
method: "PUT",
xhrFields: { withCredentials: true }
})
.done(callback)
//.fail(errorMessage);
.fail(function (jqXHR, textStatus, errorThrown) {
alert("Something went wrong: " + textStatus + " " + errorThrown);
errorCallback();
});
Я получаю это сообщение об ошибке;
XMLHttpRequest не может загрузить http:// localhost:17972/api/fault/1/close.
Ответ на предполетный запрос не проходит проверку контроля доступа: Нет
'Access-Control-Allow -Заголовок Origin присутствует на запрошенном
ресурсе. Таким образом, исходному адресу «http://localhost:12528» не разрешен
доступ. В ответе был код состояния HTTP 401.
Мой http-запрос от Fiddler;
ОПЦИИ http://localhost:17972/api/fault/10/close HTTP/1.1
Принять: /
Происхождение: http://localhost:12528
Метод-контроля доступа-запроса: PUT
Заголовки запросов контроля доступа: принять
UA-CPU: AMD64
Принять кодирование: gzip, выкачать
Агент пользователя: Mozilla/5.0 (Windows NT 10.0; Win64; x64; Trident/7.0; rv:11.0), например Геккон
Хост: localhost:17972
Длина контента: 0
DNT: 1
Соединение: сохранение активности
Прагма: без кэша
Так как мне это исправить?
РЕДАКТИРОВАТЬ
Я также попробовал этот код, чтобы заставить его работать, но получил ту же ошибку;
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
//var url = Configuration["originUrl"];
//app.UseCors(
// options => options.WithOrigins(url).AllowAnyHeader().AllowAnyMethod().AllowCredentials()
//);
app.UseCors(
options => options.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod().AllowCredentials()
);
app.UseMvc();
}
Подробнее здесь: https://stackoverflow.com/questions/460 ... cess-contr
В ASP.NET на локальном хосте ответ на предполетный запрос не проходит проверку контроля доступа: нет заголовка «Access-C ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение