我们有一个使用AngularJS框架的单页面应用程序,需要与在不同域上的.NET Web API中实现的API进行通信。
问题
API在.NET Web API中实现。为了验证用户是否可以访问我们的API,我们实现了MVC单页面应用程序模板。这使用FormsAuthentication来授予API的访问权限。
我们使用Fiddler进行调试。当我们访问API上需要直接在浏览器中进行身份验证的控制器时,我们可以确认该用户确实已经过身份验证。当我们执行XMLHttpRequest时,如所怀疑的那样,标头中没有发送任何身份验证cookie。
我们希望通过XMLHttpRequests使用FormsAuthentication来访问.NET Web API。
提出的一个解决方案是在.NET Web API和MVC之间共享会话。我们如何在.NET Web API和项目的MVC部分之间轻松维护状态?
我们知道,它不是非常RESTful,但我们需要快速解决这个问题。
PS! FormsAuthentication使用[Authorize]属性与.NET Web API控制器一起使用。只有控制器不能用XMLHttpRequests加入。
使用XMLHttpRequest时fiddler的屏幕截图
直接在浏览器中完成请求时fiddler的屏幕截图
要测试的身份验证控制器的屏幕截图
答案 0 :(得分:0)
这是CORS请求。 您可以使用Microsoft.AspNet.WebApi.Cors库。
只需在webapi config
添加一行即可在ASP.NET WEB API中使用CORS:
config.EnableCors("*","*","*");