public class AccountController : Controller
{
public IActionResult Login(string returnUrl)
{
return new ChallengeResult(
GoogleDefaults.AuthenticationScheme,
new AuthenticationProperties
{
RedirectUri = Url.Action(nameof(LoginCallback), new { returnUrl })
});
}
...
Tengo el controlador que se muestra arriba. Si escribo https://localhost:44378/Account/Login en la barra de direcciones del navegador, funciona bien; me redirigen a la página de autorización de Google, pero si me redirigen a este punto final presionando [Autorizar] o un atributo similar en otro punto final. Recibo un error como el siguiente:
Acceso a XMLHttpRequest en
'https://accounts.google.com/o/oauth2/v2/auth?...' (redireccionado desde
'https://localhost:44378/api/some-action') desde el origen
'http://localhost:3000' ha sido bloqueado por la política CORS: respuesta a
La solicitud de verificación previa no pasa la verificación de control de acceso: No
El encabezado 'Access-Control-Allow-Origin' está presente en el archivo solicitado
recurso.
JIC, agregué http://localhost:3000 tanto a los orígenes de JavaScript autorizados como a AuURI de redireccionamiento autorizados en la página de Google de registro de la aplicación.
¿Por qué es así y cómo solucionarlo?
EDITAR:
Red:
EDITAR2:
Creé un proyecto de prueba con frontend y backend en el mismo puerto, el problema persiste
(redireccionado desde 'https://localhost:44336/weatherforecast') desde el origen 'https://localhost:44336' ha sido bloqueado por la política CORS
------------------------------------
El servidor HTTP local (el que sirve https://localhost:[Puerto]/... debe configurarse para responder a la solicitud de OPCIONES HTTP con Access-Control-Allow-Origin: '*' en el encabezados de respuesta.
En caso de solicitudes entre dominios, los navegadores (eespecialmente Chrome) realice una solicitud de OPCIONES HTTP para el mismo punto final antes de HTTP GET o HTTP POST
1
Creo que recibo este error de Accounts.google.com. Mi servidor backend está configurado para aceptar solicitudes CORS desde mi frontend.
- Yola
9 de abril de 2021 a las 14:43
------------------------------------
Prueba con esto en tu archivo Startup.cs.
esto dentro del class -> cadena de solo lectura MyAllowSpecificOrigins = "_myAllowSpecificOrigins";
y esto dentro del método ConfigureServices
services.AddCors(options =>
{
options.AddPolicy(name: MyAllowSpecificOrigins,
builder =>
{
builder.WithOrigins("http://localhost:4200");
});
});
cambia la dirección y el puerto con el tuyo
También puede consultar este enlace: https://learn.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-5.0
1
Tengo una línea similar para localhost:3000 que funciona bien entre el frontend y el backend. El problema ocurre cuando ocurre la redirección a cuentas.google.com.
- Yola
9 de abril de 2021 a las 17:48