Я создал основной веб-сайт ASP. NET с Microsoft.AspNetCore.Identity и внешним логином, а также с интерфейсом Angular 8. Это в основном код моего контроллера:
[Controller]
[Route("web/[controller]")]
public class AccountController : Controller
{
// GET: web/Account/connect/{provider}
[AllowAnonymous]
[HttpGet("connect/{provider}", Name = "web-account-external-connect-challenge")]
public async Task<ActionResult> ExternalLogin(string provider)
{
var redirectUrl = Url.Action(nameof(ExternalLoginCallback), "Account", new { provider });
var properties = signin_manager.ConfigureExternalAuthenticationProperties(provider, redirectUrl);
return Challenge(properties, provider);
}
// GET: web/Account/connect/{provider}/callback
[HttpGet("connect/{provider}/callback", Name = "web-account-external-connect-callback")]
public async Task<ActionResult> ExternalLoginCallback([FromRoute]string provider)
{
...
}
}
Так что при посещении / web / Account / connect / Facebook вы должны получить страницу входа в Facebook. При успешном входе в систему FB будет перенаправлять на ExternalLoginCallback, и приложение будет обрабатывать вход в систему (создать учетную запись, войти).
![Last warning notifies about CORB](https://i.stack.imgur.com/Iz4DB.png)
Теперь кажется, что я ' Я поражен CORB (никогда не слышал об этом раньше). Я знаю о CORS, но CORB является новым для меня.
Вы можете увидеть действие здесь .
- Открыть гостевое окно пожалуйста (для автоматического входа в систему)
- Нажмите F12, чтобы открыть инструменты разработчика
- Перейдите к https://mintplayer.com/account/login
- Нажмите на кнопка входа в социальную сеть, всплывающее окно появляется, но со страницей 404 приложения angular (это также вводит в заблуждение)
- Нажмите F12, чтобы открыть инструменты разработчика для всплывающего окна
- Следующее сообщение Появляется
Блокировка перекрестного чтения (CORB) заблокированный ответ перекрестного происхождения https://www.facebook.com/login.php?skip_api_login=1&api_key=...&kid_directed_site=0&app_id=...&signed_next=1&next=...&display=page&locale=nl_NL&pl_dbl=0 с текстом типа MIME / html. Подробнее см. https://www.chromestatus.com/feature/5629709824032768.
Приложение всегда показывает NotFoundComponent, но только после нажатия ctrl + F5 (очистка кэша) открывается страница входа в Facebook. Теперь очистка кеша не имеет к этому никакого отношения, проблема определенно в КОРБЕ.
return Challenge (), по-видимому, отображает страницу входа в Facebook прямо сейчас, без фрейма в моем собственном URL.
![The response of the same request in Postman](https://i.stack.imgur.com/8WlNj.png)
Я не понимаю, как мне обойти эту проблему. Должен ли я добавить в ответ заголовок Access-Control-Allow-Origin
, чтобы разрешить загрузку / перенаправление моего приложения на страницу входа в Facebook / Twitter / Google / Microsoft? Но я не собираюсь допускать всех источников точно ...
PS. Он отлично работает на localhost / development.
Информация:
Информация о версии:
- ASP. NET Ядро: 3.1
- Microsoft.AspNetCore.Identity.EntityFrameworkCore: 3.1.1
- Microsoft.AspNetCore.Authentication.MicrosoftAccount: 3.1.1
- @ angular / core: ~ 8.1.1
- @ angular / pwa: ^ 0.803.23
Редактировать:
Хорошо, когда я пытаюсь просмотреть мою карту сайта: https://mintplayer.com/Sitemap Я получаю тот же результат, такое же поведение с следующее предупреждение консоли:
Ресурс интерпретируется как таблица стилей, но передается с приложением типа MIME / xml: "https://mintplayer.com/assets/sitemap.xsl".