#react-native #asp.net-core #cors #request-headers
#react-native #asp.net-core #cors #заголовки запросов
Вопрос:
Я использую fetch API на стороне клиента и получаю эту ошибку:
Доступ к выборке в ‘myUrl’ из исходного ‘mylocalhost’ был заблокирован политикой CORS: ответ на предполетный запрос не проходит проверку контроля доступа: заголовок ‘Access-Control-Allow-Origin’ отсутствует на запрошенном ресурсе.
с react-native я могу хорошо получить ответ, но когда я хочу использовать запрос в react-js, я получаю эту ошибку!
на стороне серверной части(asp.net ядро 2.1):
я добавляю Access-Control-Allow-Origin: *
в заголовок на основе документа Microsoft https://learn.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-2.1
при запуске:
services.Configure<MvcOptions>(options => {
options.Filters.Add(new CorsAuthorizationFilterFactory("AllowClientOrigin"));
});
services.AddCors((cors)=>
{
cors.AddPolicy("AllowClientOrigin", policy =>
policy.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials());
});
app.UseCors("AllowClientOrigin");
и для контроллеров:
[EnableCors("AllowClientOrigin")]
но проблема все еще существует!
Комментарии:
1. @ZhiLv спасибо за ваш комментарий, как я могу добавить его в заголовок запроса? Я добавляю некоторый код в свой fetch api: ` mode:’cors’, учетные данные:’include’ ` , есть ли что-нибудь еще, что я должен сделать на стороне клиента?
2. После исследования выяснилось, что указание AllowAnyOrigin и allowCredentials является небезопасной конфигурацией и может привести к подделке межсайтового запроса. Служба CORS возвращает недопустимый ответ CORS, когда приложение настроено с использованием обоих методов. Итак, попробуйте использовать метод WithOrigins для добавления разрешенных источников, код как показано ниже:
services.AddCors((cors) => {cors.AddPolicy("AllowClientOrigin", policy => policy.WithOrigins("https://localhost:44351").AllowAnyHeader().AllowAnyMethod().AllowCredentials());});
.3. Чтобы узнать больше о предполетном запросе, см. Предполетные запросы .