使用 Angular WebApi 注销:错误选项

Logout with Angular WebApi : Error OPTIONS

当我通过我的 WebApi 与我的 angular 应用程序断开连接时,我的请求在通话期间被拒绝 OPTIONS

我使用OpenIddictAsp.Net core 2.2,我调用这个方法

[HttpGet("~/connect/logout")]
public async Task<IActionResult> Logout()
{
    await _signInManager.SignOutAsync();
    return SignOut(OpenIddictServerDefaults.AuthenticationScheme);
}

我有这个错误

info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1] Request starting HTTP/1.1 OPTIONS http://localhost:44300/connect/logout fail: OpenIddict.Server.Internal.OpenIddictServerHandler[0] The logout request was rejected because an invalid HTTP method was specified: OPTIONS. info: OpenIddict.Server.Internal.OpenIddictServerHandler[0] The logout response was successfully returned as a plain-text document: { "error": "invalid_request", "error_description": "The specified HTTP method is not valid." }.

我的其他 API 没问题

发送 OPTIONS 请求的事实 - 在这种情况下很可能是预检 CORS 请求 - 让我觉得你试图将注销端点用作 "API endpoint",它不是为此而设计的。

与授权端点非常相似,注销端点是一个交互式端点,旨在与良好的旧重定向和可选的同意屏幕一起使用,以通知用户他或她即将注销(因此,防止不必要的注销,这通常被视为有针对性的 "DOS" 攻击)。

假设您不需要同意屏幕,请考虑在隐藏的 iframe 中发送注销请求,而不是使用 XMLHttpRequest。