【发布时间】:2015-08-15 21:05:14
【问题描述】:
我有一个提供文件的操作:
public override FileContentResult Foo() {
var someDataAsBytes = ...
return File(someDataAsBytes, "text/csv", "somefilename.csv");
}
表格很简单:
<form method="get" action="/Foo" id="myForm">
<button type="submit">Download</button>
</form>
我通过脚本启动下载(所以页面不会改变):
$("#myForm").on("submit", function() {
window.location.href = $(this).attr("action");
return false;
});
问题是向服务器发送了两个请求:一个 GET 和一个 HEAD。并且该操作运行两次,但只提供一次文件。
如何让它只发送一个请求?还是这是正常行为?
额外信息:
我在 Fiddler 中对此进行了检查,对 GET 和 POST 的响应是相同的,除了 GET 具有非零 Content-Length 和实际有效负载数据。对 HEAD 的响应没有任何内容。两者都返回 200 OK 状态码。这正常吗?
【问题讨论】:
-
你能发布html吗?特别是
form标签。 -
我在本地复制了你的代码,但我无法获得第二次命中。代码的其他部分可能会导致问题。
-
chrome 版本 43.0.2357.81
-
事实上,在 Firefox 中,我尝试过但无法重现您的问题。
-
你能禁用FF中的所有插件并试一试告诉我,然后我可以将解决方案作为答案发布:-)
标签: asp.net asp.net-mvc http-headers