我正在尝试按照 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/