【问题标题】:Enabling Cors in local IIS在本地 IIS 中启用 Cors
【发布时间】:2020-10-18 22:54:50
【问题描述】:

我已尝试按照 Microsoft 的步骤进行操作

https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api

我提交了我在下面的 GitHub 链接中创建的代码

https://github.com/RGatchalian/StackOverflowQuestions/tree/master/ASPNET/EnablingCors

解释一下,Front-end 文件夹是 Javascript 对 WebApi 的调用,TestingCors 文件夹是 WebApi。我目前正在我的本地 IIS 中运行它。我使用 Web Deployment 部署了 WebApi,并将前端放入 inetpub/wwwroot/。当两者都在本地主机中时它实际上可以工作

我遇到的问题是,当我正在开发并想要测试时,我遇到了错误。

唯一的解决方法是使用带有 disable-web-security 的 Chrome。它有效。我尝试使用从 Google 获得的内容更改 WebApiConfig.cs 和 web.config,但仍然无法正常工作。

更新 这是代码

  <system.web>
    <authentication mode="Windows"/>
    <authorization>     
        <allow users="*" />   
    </authorization> 
    <!-- <compilation targetFramework="4.5.2" /> -->
    <!-- <httpRuntime targetFramework="4.5.2" /> -->
    <customErrors mode="Off" />
  </system.web>
  <system.webServer>
    <cors enabled="true" >
        <add origin="*"  />           
    </cors>
  </system.webServer>

这是我在输入 allowCredetials 时遇到的错误

当我删除 allowCredentials 时,它可以工作,但未检测到用户。

【问题讨论】:

  • 谢谢@LexLi。看起来它在 Windows 身份验证模式下不起作用。起初,直到我禁用 Windows 身份验证并启用匿名身份验证,它才起作用。我看到一些博客需要添加 allowCredentials="true" 但这也不起作用。
  • 不确定是不是你写的。 blog.lextudio.com/…你有这方面的例子吗?

标签: jquery ajax iis asp.net-web-api cors


【解决方案1】:

它与 CORS 问题有关。跨域资源共享,解决你需要启用cors。 我们可以通过三种方式启用 CORS:

  1. 全球层面
  2. 控制器级别
  3. 或特定方法级别

如果你想在方法级别启用你可以装饰 EnableCors 属性,检查下面的代码: [EnableCors(origins: "", headers: "", methods: "*")] 您可以在源中编写特定的 url,标头也可以设置您要传递的特定标头和方法名称作为您需要应用的位置。 我正在为所有通用添加 *(任何人都可以访问)。

希望对您解决问题有所帮助。

【讨论】:

  • 我已经这样做了,但没有成功。我已经尝试了所有级别。
【解决方案2】:

我可以重现这个问题。

网页浏览器返回此错误的原因是您从物理路径打开 index.htm 并且 CORS 被阻止。

请从 IIS 或 IIS express 打开它。然后你需要修改你的属性为

 [EnableCors(origins: "http://www.myclient.com", headers: "*", methods: "*", SupportsCredentials = true)]

当你从http://www.myclient.com调用api时,最后你会看到CORS

【讨论】:

  • @ReydanGatchalian 在 IIS 中托管客户端 ajax 时收到什么错误消息?
  • 基本上 WebApi 可以在 Windows 身份验证上实现,也可以不实现。我目前正在测试的是带有 Windows 身份验证的那个。我遇到的问题是,当我在 标记或 上添加 allowCredentials="true" 时失败,请参阅帖子上的更新
猜你喜欢
  • 1970-01-01
  • 2021-03-14
  • 2019-04-18
  • 2013-10-19
  • 1970-01-01
  • 2017-01-31
  • 2022-10-05
  • 2017-11-24
  • 2020-10-12
相关资源
最近更新 更多