【问题标题】:Http OPTION REQUEST with cors in web api with authentication带有身份验证的 web api 中带有 cors 的 Http OPTION REQUEST
【发布时间】:2017-02-19 20:13:35
【问题描述】:

我正在使用 Microsoft.AspNet.WebApi.Cors 来支持跨源请求

https://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api

我的 web api 配置为使用 windows 身份验证,并且来自 angular 的每个请求都将 withCredentials 设置为 true。一切都在使用 HTTP GET 但使用 PUT 请求发送未经授权的预检请求。我的问题是 Microsoft.AspNet.WebApi.Cors 是否支持配置 OPTION 请求。

【问题讨论】:

  • 根据我的经验,参数名称可能会发生冲突,请尝试使用不同的名称,另外您可以在此处发布您的控制器,以便每个人都可以看到并提供帮助。
  • 抱歉,什么参数与 HTTP OPTIONS 请求有关。事实上,据我了解,OPTION 请求中没有传递任何参数
  • 我的意思是,在您的 PUT 请求中。
  • 我尝试通过禁用安全功能打开 chrome 来发送相同的 PUT 请求,它工作正常。所以看起来参数没问题。
  • 好吧,如果没有示例代码、配置或任何东西,我们将很难识别问题。

标签: asp.net-web-api cors


【解决方案1】:

把它放在你的 Global.asax.cs 中

(我确定您要么找到了解决方案,要么放弃了,但这是我在寻找解决方案时在 Google 上找到的链接。)

protected void Application_BeginRequest()
{
    if (Request.HttpMethod == "OPTIONS")
    {
        Response.StatusCode = (int)HttpStatusCode.OK;
        Response.AppendHeader("Access-Control-Allow-Origin", Request.Headers.GetValues("Origin")[0]);
        Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
        Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
        Response.AppendHeader("Access-Control-Allow-Credentials", "true");
        Response.End();
    }
}

【讨论】:

    猜你喜欢
    • 2018-01-24
    • 2021-02-09
    • 2013-06-09
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    • 2018-04-19
    相关资源
    最近更新 更多