C# 如何在下载链接中实现AntiForgeryToken

C# 如何在下载链接中实现AntiForgeryToken,c#,jquery,asp.net,ajax,C#,Jquery,Asp.net,Ajax,如何使用下载链接实现AntiForgeryToken: @Html.ActionLink("download spreadsheet", "GetSpreadsheet", new { id = "123" }) 我试图创建ajax请求,但无法下载该文件,控制器中的操作如下: return this.File(path, "application/zip", nomFic); 有什么想法吗?在GE

如何使用下载链接实现AntiForgeryToken:

@Html.ActionLink("download spreadsheet", "GetSpreadsheet", new { id = "123" })
我试图创建ajax请求,但无法下载该文件,控制器中的操作如下:

        return this.File(path, "application/zip", nomFic);

有什么想法吗?

GET
方法中使用
AntiForgeryToken
是不可能的

GET
方法只能用于服务器上的只读操作。如果要执行只读操作以外的操作,则应使用POST方法

@using (Html.BeginForm("GetSpreadsheet", FormMethod.Post, new { id = "123" }))
{
    @Html.AntiForgeryToken()
    <input type="submit" value="Download" />
    ...
}

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult GetSpreadsheet(int id)
{
    ...
}
@使用(Html.BeginForm(“GetSpreadsheet”,FormMethod.Post,new{id=“123”}))
{
@Html.AntiForgeryToken()
...
}
[HttpPost]
[ValidateAntiForgeryToken]
公共操作结果GetSpreadsheet(int id)
{
...
}

提交表单时不使用防伪令牌吗?下载文件通常是GET请求。我可以使用POST请求下载文件吗?可以(下载文件的端点可以是您想要的任何动词),但我看不出下载文件如何构成跨站点请求伪造攻击。