0

我有一个 MVC 站点在 IIS 内的子应用程序中运行,该站点在初始加载后执行 Ajax 请求以获取其他内容。

问题在于,如果用户未能在 URL 末尾输入尾随“/”,AJAX 请求将失败,因为 XHR 对象在请求的 URL 前面添加了一个“/”。这导致它进入根域并离开应用程序区域。

下面是 Fiddler 跟踪显示我的意思。

提琴手追踪

前 3 个条目显示了一个基本的 HTML 站点,我设置该站点以查看 MVC 环境之外发生的情况。在这种情况下,如果未提供尾部“/”,IIS 将重定向到带有尾部斜杠的 URL。随后的 AJAX 请求就会成功。

在接下来的 2 个条目中的 MVC 中,未发出重定向,然后 AJAX 请求失败。如果缺少尾随“/”,有没有办法在 MVC 场景中获得 301 重定向(最好来自 IIS)?

4

1 回答 1

2

您可以配置 IIS URL 重写模块来执行您需要的操作。查看此页面上的第一项(我得到的第一个搜索结果)。

我建议的另一个选择是您可以使用类似的东西生成您的 ajax 请求@Url.Action("action", "controller"),我认为这应该为您解决斜线问题。如果您这样做,那么您的应用程序的托管方式将无关紧要,它应该可以正常工作。

一个更完整的例子,我的意思,使用 jQuery:

$.ajax({
    type: "POST",
    url: @Url.Action("action", "controller"),
    data: $("form").serialize(),
    success: function (result) {
        ...
    },
    failure: function () {
        ...
    }
});
于 2013-05-30T16:22:45.893 回答