【问题标题】:401.2 response when call WEB API from MVC project从 MVC 项目调用 WEB API 时的 401.2 响应
【发布时间】:2018-03-08 05:26:50
【问题描述】:

我正在通过 Visual Studio 在端口 49374 上本地运行一个 WEB API 项目。

然后我通过 VS 在本地运行一个 MVC 项目,端口为 57062。

我正在尝试从 MVC 项目 (57062) 调用我的 WEB API 项目 (49374) 中的 API,但收到 401.2 响应,见下文:

当我直接从浏览器调用 API 时,它工作正常。

CORS 在 Web API Web 配置中设置如下:

        <customHeaders>
            <add name="Access-Control-Allow-Origin" value="http://localhost:57062" />
            <add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS, PUT, DELETE" />
            <add name="Access-Control-Allow-Headers" value="Content-Type, Accept" />
            <add name="Access-Control-Allow-Credentials" value="true" />
            <!--<add name="Access-Control-Allow-Credential-Header" value="true"/>-->

        </customHeaders>
    </httpProtocol>

并且该项目在VS上有以下设置:

我不知道问题可能是什么 - 任何人都可以提出任何建议吗?

【问题讨论】:

    标签: c# asp.net-web-api cors


    【解决方案1】:

    我也遇到了同样的问题。 IIS Express 似乎没有使用 web.config 中的自定义标头。

    我通过添加 global.asax.cs 来修复它:

        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {
            if (Context.Request.Headers.AllKeys.Contains("Origin"))
            {
                Context.Response.AddHeader("Access-Control-Allow-Origin", "http://localhost:57062");
                Context.Response.AddHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
                Context.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, PATCH, OPTIONS");
                Context.Response.AddHeader("Access-Control-Allow-Credentials", "true");
                if (Context.Request.HttpMethod == "OPTIONS") Context.Response.End();
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 2018-02-12
      • 1970-01-01
      • 2015-06-02
      • 1970-01-01
      相关资源
      最近更新 更多