【发布时间】:2015-05-18 20:42:41
【问题描述】:
好的,这是我们昨天处理的一个奇怪案例。当我们的网站被加载时,这个表单的第一个请求会按预期工作。防伪验证通过,没有任何错误,一切都很好。但是,在首次成功使用后,其他浏览器请求会停止生成防伪令牌的 cookie 部分。所有进一步的发布尝试都将返回 500,表明 cookie 不存在。查看浏览器资源确认 cookie 不存在。我假设这是某种形式的配置问题,因为在我们的测试和开发环境中一切正常,但是一旦我们转移到我们的暂存环境,问题就会出现并且我已经没有想法了。
我有一个这样的控制器操作:
[HttpPost]
[ValidateAntiForgeryToken()]
public bool someFunction(string someParameter) {
// Do things
return success;
}
在我们的页面上,我有一个这样的设置
<form id="someForm">
@Html.AntiForgeryToken()
<input type="text" name="someField" />
</form>
它是这样连接起来的:
$("#someForm").On("submit", function(e) {
e.PreventDefault();
var url = "path/to/action";
var someFieldVal = $(this).Find('[name="someField"]').val();
var token = $(this).Find('[name="__RequestValidationToken"]');
var data = { '__RequestVerificationToken': token, 'someParameter': someFieldval };
$.ajax({
type: "POST",
url: url,
data: data,
success: function (response) {//do stuff}
});
}
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-4 cookies