Доступ к выборке в ‘myUrl’ из исходного ‘myLocalHost’ был заблокирован политикой CORS

#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. Чтобы узнать больше о предполетном запросе, см. Предполетные запросы .