【问题标题】:Logout with Angular WebApi : Error OPTIONS使用 Angular WebApi 注销:错误选项
【发布时间】:2019-08-20 05:46:45
【问题描述】:

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

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

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

我有这个错误

信息:Microsoft.AspNetCore.Hosting.Internal.WebHost[1] 请求启动 HTTP/1.1 OPTIONS http://localhost:44300/connect/logout 失败: OpenIddict.Server.Internal.OpenIddictServerHandler[0] 注销请求被拒绝,因为指定了无效的 HTTP 方法:OPTIONS。信息: OpenIddict.Server.Internal.OpenIddictServerHandler[0] 注销响应成功返回为纯文本文档:{ “错误”:“无效请求”, "error_description": "指定的 HTTP 方法无效。" }。

我的其他 API 没有问题

【问题讨论】:

  • OPTIONS 请求被禁用了吗?你启用 CORS 了吗?
  • 它是由一个角度应用程序调用的,我不知道如何在调用时禁用 OPTION。在服务器端,我将 CORS 域设置为 all origins all verbs ...
  • 您是否在 IIS 上运行它?如果是,您应该查看 web.config。
  • 您也可以在控制器处设置断点,查看 API 调用是否成功,但您的服务器抛出异常。这就是导致我的错误的原因。

标签: c# asp.net-core logout openiddict


【解决方案1】:

发送 OPTIONS 请求的事实(在这种情况下很可能是预检 CORS 请求)让我认为您尝试将注销端点用作“API 端点”,而这并不是为此而设计的。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 2021-09-27
    • 2017-01-04
    • 2018-07-03
    • 2014-09-29
    • 2019-03-03
    相关资源
    最近更新 更多