Nano Hash - криптовалюты, майнинг, программирование

React-вызов Asp.Net Core с сервером идентификации выдает CORS-ошибки

Я постараюсь сделать это кратко, чтобы спасти цифровой дождевой лес. Пожалуйста, спросите, если я пропустил какие-то подробности.

У меня есть шаблон проекта asp .net 3.1 core + react в VS со встроенным сервером идентификации. Это работает нормально, но теперь я хочу сделать свой проект реакции в отдельном проекте. Итак, я начал новый проект create-react-app-project.

Итак, из моего нового проекта реакции, когда я вызываю OidcConfigurationController. Вызывается метод контроллера, и я могу выполнить код на стороне сервера. Затем я получаю сообщение об ошибке клиента Failed to fetch, которое, по-видимому, указывает на ошибку CORS.

Это то, что я получил, когда проверял заголовок на панели инструментов Chrome dev- ›сеть

Request URL: https://localhost:5001/authentication/_configuration/MyProject.Web
Referrer Policy: strict-origin-when-cross-origin
:authority: localhost:5001
:method: GET
:path: /authentication/_configuration/MyProject.Web
:scheme: https
accept: */*
accept-encoding: gzip, deflate, br
accept-language: en-US,en;q=0.9,sv;q=0.8
origin: http://localhost:3000
referer: http://localhost:3000/
sec-ch-ua: "Google Chrome";v="87", " Not;A Brand";v="99", "Chromium";v="87"
sec-ch-ua-mobile: ?0
sec-fetch-dest: empty
sec-fetch-mode: cors
sec-fetch-site: cross-site
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36

Это соответствующие строки в startup.cs

ConfigureServices ()

services.AddCors(options =>
{
    options.AddPolicy(name: MyAllowSpecificOrigins,
                        builder =>
                        {
                            //builder.WithOrigins("http://localhost:3002/", "https://localhost:3001")
                            builder.AllowAnyOrigin()
                        .AllowAnyMethod()
                        .AllowAnyHeader();
                        });
});

services.AddSingleton<ICorsPolicyService>((container) => {
    var logger = container.GetRequiredService<ILogger<DefaultCorsPolicyService>>();
    return new DefaultCorsPolicyService(logger)
    {
        AllowAll = true
    };
});

Настроить ()

app.UseCors(MyAllowSpecificOrigins); // I also tried to switch order on these 2 rows
app.UseIdentityServer();

Ничего из того, что я здесь делаю, похоже, не меняет политику реферера в заголовке, но все равно получаю то же самое сообщение

React-call - это простая выборка (адрес-контроллера-который-он-поражает).

Я также попытался запустить новый проект на стороне сервера (asp net core api) и установить ту же политику CORS, я могу вызвать этот api из моего реагирующего клиента без каких-либо ошибок)


  • Можете ли вы показать нам свое сообщение об ошибке в инструментах разработки? По вашему описанию не могу найти никаких ошибок. 07.01.2021

Ответы:


1

Итак, в запросе вы видите, что используется заголовок origin: http: // localhost: 3000. Это источник запроса CORS. Но запрос предназначен для этого URL:

https: // локальный: 5001 / аутентификация / _configuration / MyProject.Web

Неужели не мешает перенаправление с небезопасного HTTP на HTTPS?

Убедитесь, что вы также установили настройки CORS в IdentityServer.

Дополнительные сведения см. В документации CORS.

В качестве побочного примечания, IIS также может вызвать проблемы с CORS, подробности см. В этом ответе:

IIS перехватывает запрос CORS Preflight OPTIONS

07.01.2021
  • Привет Тор! Спасибо за ваш ответ! Я проверю это и отвечу после нормальной работы 07.01.2021
  • Я бы также отправил копию неудавшегося запроса от Fiddler (telerik.com/download/fiddler ), легче определить, что там не так. 07.01.2021
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..