我有一个网站正在尝试调用另一个网站上的MVC控制器操作。这些网站都在AD FS 2.0中设置为信赖方信任。当在两个网站之间的浏览器窗口中打开页面时,一切都可以验证并正常工作。但是,当尝试使用jQuery AJAX方法从JavaScript调用控制器操作时,它总是失败。以下是我正在尝试做的代码片段...
$.ajax({
url: "relyingPartySite/Controller/Action",
data: { foobar },
dataType: "json",
type: "POST",
async: false,
cache: false,
success: function (data) {
// do something here
},
error: function (data, status) {
alert(status);
}
});
问题在于AD FS使用JavaScript向受信方发送隐藏的html表单进行发布。当使用Fiddler进行跟踪时,我可以看到它到达AD FS网站并返回此html表单,该表单应该发布并重定向到经过身份验证的控制器操作。问题是,由于ajax请求期望来自控制器操作的json,因此此表单作为ajax请求的结果返回,显然会失败并出现解析器错误。似乎这应该是一个常见的场景,那么正确的方式是如何从AJAX与AD FS通信并处理此重定向呢?