Ошибка: неверный ответ Content-Type: text / html - PullRequest
1 голос
/ 28 марта 2020

Я реализовал IdentityServer4 в веб-приложении asp. net core 3.1, загруженном в службу приложений Azure, которая используется Angular 9 (с использованием oid c -клиента 1.10.1) на другом Azure Сервисе приложений. При запуске этих двух на моем локальном веб-сервере IIS 10.0 все работает нормально. На Azure при вызове UserManager.signinRedirect () в приложении Angular 9 он отвечает на следующую ошибку (я вижу на консоли браузера): Error: Uncaught (in promise): Error: Invalid response Content-Type: text/html, from URL: idpservername.azurewebsites.net/.well-known/openid-configuration Если я копирую / вставляю URL в адресную строку браузера, он отвечает действительным json контентом. Я гуглил и нашел эту ссылку: <a href="https://github.com/IdentityServer/IdentityServer4/issues/2967" rel="nofollow noreferrer">https://github.com/IdentityServer/IdentityServer4/issues/2967</a> Но это не сильно помогает, потому что дело закрыто из-за отсутствия активности, когда последний ответ читается как ", оказывается, что IIS неправильно отображал html. Я запускаю IdentityServer в службе приложений (я не использую виртуальную машину), поэтому у меня нет доступа к IIS (если ответ подразумевает настройку чего-либо непосредственно на веб-сервере IIS). Есть ли у вас какие-либо предложения о том, как решить эту проблему? : - \

Ответы [ 3 ]

0 голосов
/ 28 марта 2020

Set AllowedCorsOrigins свойство клиента в IdentityServer.

new Client
{
...
   AllowedCorsOrigins = { "http://localhost:4200","http://yourangulardomain.com" },
0 голосов
/ 10 апреля 2020

Ну, я решил свою проблему! :)

Ошибка была обнаружена в моем коде Angular.

Я неправильно определил строку URL в свойстве author UserManager. Мой неправильный код читается следующим образом:

@Injectable()
export class AuthService {
   private _userManager = new UserManager({
      authority: 'idsdomain.azurewebsites.net/', 
      ...
   });
   ...
}

Обратите внимание, что в строке URL-адреса для свойства "Права" отсутствует " https: // " Префикс. Эх! *

Я наконец-то обнаружил ошибку, когда внимательно прочитал на вкладке "Сеть" в "Инструментах Google для разработчиков" (нажмите F12) URL запроса, показывающий неверную строку, и я заметил, что Ответ также был полным Index.cs html page.

Правильный код должен выглядеть следующим образом:

@Injectable()
export class AuthService {
   private _userManager = new UserManager({
      authority: 'https://idsdomain.azurewebsites.net/', 
      ...
   });
   ...
}

Надеюсь, это кому-нибудь поможет. Иногда самые простые ошибки труднее всего получить!

0 голосов
/ 28 марта 2020

попробуйте поместить responseType: 'text' в опции body

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...