Я использую Angular 6 @ localhost: 4200
& Asp.net Web Api Identity - индивидуальная учетная запись пользователя @ localhost: 57310
Теперь я включил cors, как это, в моем webapiconfig.cs
файле: -
EnableCorsAttribute cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
Это работало нормально, но теперь, когда мне нужно добавить google + login authenticaton на моем веб-сайте, он снова начал показывать эту ошибку.
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
Итак, чтобы решить эту проблему, я добавляю следующий код в <system.webServer>
в web.config
файле.
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*"/>
<add name="Access-Control-Allow-Headers" value="*"/>
<add name="Access-Control-Allow-Methods" value="*"/>
</customHeaders>
</httpProtocol>
И новая ошибка была =>
The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed. Origin 'http://localhost:4200' is therefore not allowed access.
Если я заменим "*"
на http://localhost:4200
в любом из перечисленных выше методов, позволяющих использовать ядро. Ошибка меняется соответственно, как =>
The 'Access-Control-Allow-Origin' header contains multiple values '*, http://localhost:4200', but only one is allowed. Origin 'http://localhost:4200' is therefore not allowed access.
OR
The 'Access-Control-Allow-Origin' header contains multiple values 'http://localhost:4200, *', but only one is allowed. Origin 'http://localhost:4200' is therefore not allowed access.
Если я удалю любой из них, ошибка вернется к =>
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
Угловая информация
Мой угловой код this.http.get("http://localhost:57310/api/Account/ExternalLogin?provider=Google&response_type=token&client_id=self&redirect_uri=http%3A%2F%2Flocalhost%3A4200%2Flogin&state=tTs32zmKbLSJXZP5O46h-GC29j2yrt3TFYYtcG3VY9o1").subscribe(data=>console.log(data));
Если я запрашиваю эту ссылку в браузере, она работает нормально, но не от углового звонка.
Информация о веб-API
Мой метод WebAPI AppilicationOAuthProvider.cs
для перенаправления файла: =>
public override Task ValidateClientRedirectUri(OAuthValidateClientRedirectUriContext context)
{
//context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
if (context.ClientId == _publicClientId)
{
Uri expectedRootUri = new Uri("http://localhost:4200/login");
if (expectedRootUri.AbsoluteUri == context.RedirectUri)
{
context.Validated();
}
}
return Task.FromResult<object>(null);
}
Информация об аккаунте Google Developer
Моя авторизованная исходная ссылка JavaScript
http://localhost:4200
Мои авторизованные URI перенаправления
http://localhost:57310/signin-google