我在MVC应用程序中实现了以下代码,以便在用户点击链接时加载一些Json对象。
<form>
@Html.AntiForgeryToken()
</form>
$("body").on('click', ".clickhere", (function () {
var token = $('[name=__RequestVerificationToken]').val();
$.ajax({
type: 'POST',
url: '/do/things',
cache: false,
headers: { "__RequestVerificationToken": token },
contentType: 'application/json; charset=utf-8',
data: data
},
success: function () {
...
},
error: function () {
...
}
});
});
我根据this tutorial验证令牌。奇怪的是,如果我从Visual Studio 2015中运行该项目,这是有效的,但如果它在IIS 6.2上作为应用程序发布则不行。在IIS上运行时,我可以清楚地看到请求令牌不匹配。
答案 0 :(得分:0)
为了使其正常工作,我将视图中的代码更改为:
@functions{
public string GetAntiForgeryToken()
{
string cookieToken, formToken;
AntiForgery.GetTokens(null, out cookieToken, out formToken);
return cookieToken + "," + formToken;
}
}
<input type="hidden" name="__RequestVerificationToken" id="__RequestVerificationToken" value="@GetAntiForgeryToken()" />