azure - 调用 webapi 抛出 No Access-Control-Allow-Origin header 出现在请求的资源上

标签 azure azure-active-directory ws-federation

我正在尝试按照 Azure 示例通过此处提供的 WSFederation 将 Azure AD 集成到我的 MVC 4.6 Web 应用程序中 https://github.com/Azure-Samples/active-directory-dotnet-webapp-wsfederation

该示例按预期工作。但是,当我在同一个 MVC 项目中添加 WebApi Controller 并使用 [Authorize] 进行装饰时,它会出错。我在这个新添加的 WebApi Controller 中有一个针对 GET 方法的 ajax 请求。

错误是:

XMLHttpRequest cannot load https://login.microsoftonline.com/85c96496-fbc6-4bf3-bfcc-fb51ca874527/wsfe…UIWNgv-EANzWADAQPCOqF--3c7KGt6G21ucvLkce_wMcwVguKz62ioyGPxQg&wa=wsignin1.0. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://localhost:4279' is therefore not allowed access.

感谢您的帮助!

最佳答案

为 Web API 添加 Authorize 标签后,您需要登录 Web 应用程序,然后才能调用 Ajax 请求此 Web API。然后Ajax请求会自动发送cookie进行身份验证,并返回正确的结果。

如果您在登录之前向 Web API 调用 Ajax 请求,由于 Web API 受到保护并且 Web 应用程序与 Azure AD 集成,因此该请求将重定向到 Azure AD 的登录页面,这是不允许的跨域请求。这就是这个问题的根本原因。

关于azure - 调用 webapi 抛出 No Access-Control-Allow-Origin header 出现在请求的资源上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40893657/

相关文章:

angularjs - 从 JWT token 检索 Azure 组详细信息

azure - Azure 中的 AWS PassRole 权限相当于什么?

spring-security - wsfederation 中的 CAS 属性未转发到 CAS 客户端

java - 如何访问 Azure 的 Tomcat 日志以进行 Java 应用服务部署

Azure 图形 API

azure - Azure 存储表是如何实现的?

c# - Service Fabric Owin 管道中的 WsFederation 身份验证不起作用

azure - 如何在Windows Azure中使用子域?

office365 - 在计算机上找不到服务 ADSync

c# - 在哪里可以查看 System.IdentityModel.Services 命名空间中的源代码?