在 .net MVC 5 中实现 CORS 时出现问题



>我有一个 WebAPI 项目正在部署到本地计算机 IIS 上的http://localhost:81/,以及在同一台计算机上从http://localhost/运行的 Web 项目。

来自Web项目的API调用是使用Angular进行的。最初,我在添加对 CORS 的支持时遇到错误,我通过将以下代码片段添加到 WebAPI 项目中的 web.config 来解决:

<httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
        <add name="Access-Control-Allow-Origin" value="http://localhost" />
        <add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS, PUT, DELETE" />
      </customHeaders>  
</httpProtocol>

当我在浏览器控制台中检查响应标头时,我可以确认 CORS 现在已启用。但 API 调用收到 403(禁止访问)错误。

获取http://localhost:81/api/Sample/GetSomeNumber/1 403(禁止)

该方法不使用任何用于身份验证或授权的属性进行修饰,它只是返回它收到的参数。

我在这里错过了什么?

我按照您的说明创建了两个 ASP.NET 应用程序:

  1. 指向本地 IIS 端口 81 的 Web API 项目。
  2. MVC 项目指向本地 IIS,(默认)端口 80。

使用 CORS 设置 Web API 项目后,当我的应用程序尝试访问它时,我也遇到了 403:禁止错误。我还确认在直接访问它时出现错误。

我发现我的问题是,当我在本地主机:81 上为我的 Web API 创建网站时,为其创建的应用程序池默认为 v2.0 而不是 v4.0。我更改了应用程序池版本,使用这两个项目重新生成了解决方案,然后一切都按预期工作。

更改应用程序池版本

  1. 打开 IIS 管理器。
  2. 双击"应用程序池"。
  3. 双击与您的 localhost:81 应用关联的池。
  4. .NET Frawework 版本:.NET Framework v4.0.xxxxx(我的是 30319)
  5. "确定"按钮
  6. 从 Visual Studio 重新生成解决方案

最新更新