asp.net-mvc - 回发总是返回状态代码 301 永久移动

标签 asp.net-mvc visual-studio http redirect iis-express

任何类型的回发,Ajax 或标准 M​​VC 表单提交,都会返回状态代码 301。似乎操作或 Controller 是什么都没有区别。将浏览器从 Chrome 更改为 Firefox 没有帮助。

<script>
$('.zzz').click(function (e)
{
    e.preventDefault();
    e.stopPropagation();

    $.ajax({
        url: '/XXX/yyy',
        data: { test: "hello" },
        type: "post",
        success: function () { alert("success"); },
        error: function () { alert("error"); }
    });
});
</script>

Controller :

public class XXXController : AsyncController
{
    [HttpPost]
    public ActionResult YYY()
    {
        return null;     // ====== NEVER REACHES HERE
    }
}

标题

Request URL:http://localhost:47038/xxx/yyy
Request Method:POST
Status Code:301 Moved Permanently
Remote Address:[::1]:47038
Referrer Policy:no-referrer-when-downgrade

Response Headers
=================
Access-Control-Allow-Origin:*
Content-Length:154
Content-Type:text/html; charset=UTF-8
Date:Tue, 21 Nov 2017 16:02:23 GMT
Location:http://localhost:47038/xxx/yyy/
Server:Microsoft-IIS/10.0
X-Frame-Options:SAMEORIGIN
X-Powered-By:ASP.NET
X-SourceFiles:=?UTF-8?B?QzpcdmF1bHRccHJpbnRlcnBpeG12Y3VpXFByaW50ZXJQaXhNdmNVSVxYWFhcWVlZ?=

Request Headers
================
view source
Accept:*/*
Accept-Encoding:gzip, deflate, br
Accept-Language:en-GB,en-US;q=0.9,en;q=0.8
Connection:keep-alive
Content-Length:10
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Cookie:ASP.NET_SessionId=rargvavdg0reeuhqvqkznsaj; MachineToken=a2fec363-6318-4ec3-8d2c-0eee116fc778; __RequestVerificationToken=80gj5joNWUpBjgjOsxkV0SkDwhrX3fNbzYTZrTaUGpJXlIEY7nyguehSDpz525JKyNfjlI5Two-poQs1dC2jw0kWnpvnK74iz4X3KV5MtSI1
Host:localhost:47038
Origin:http://localhost:47038
Referer:http://localhost:47038/xxx/Index/?product=puzzle
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36
X-Requested-With:XMLHttpRequest

Form Data
==========
test:hello

GET 请求工作正常,只是重定向了 POST。

为什么返回 301“永久移动”,而不是执行 Action 方法?

最佳答案

解决方案是在回发 URL 的末尾放置一个正斜杠:

url: '/XXX/yyy'   ==> 301 Moved Permanently
url: '/XXX/yyy/'  ==> 200 OK

非常尴尬地浪费了一天的工作。

关于asp.net-mvc - 回发总是返回状态代码 301 永久移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47418710/

相关文章:

asp.net-mvc - 静态内容的 MVC 客户端缓存不起作用

asp.net-mvc - 如何使用 visual studio 在另一个项目中共享一个项目的 css 和 js 文件?

c# - Visual Studio 无法识别同一项目中的命名空间

c# - 如何将 "bin"和 "obj"目录重定向到不同的位置?

javascript - 如何为这种情况构建 Knockout JS(使用 ASP.NET MVC)

c# - MVC6 默认页面

visual-studio - Visual Studio 不包括我指定的先决条件

java - 通过 HTTP 代理的 HTTPS

php - 判断 HTTP 客户端是否断开连接

linux - 在我的 Linux 主板上监听多个端口或启用 SSL 模块后 HTTP 请求失败