我有一些遗留应用程序,目前正在向MVC3表单发布基本信息。我想将其分离为GET并传递查询字符串中的值。很容易。但是,我想在请求中添加一个防伪标记。首先,这看起来是一个不错的选择吗?其次,是否存在从非MVC3模块到MVC3表单实现此类功能的任何示例?
我的另一种选择是加密查询字符串。
答案 0 :(得分:1)
ASP.NET实现的Anti-Forgery Token是一种防止CSRF(corss-site-request-forgery)并且只能与HTTP POST
一起使用的机制。
由于您正在实现基于GET
的“API”,因此该令牌将无效(请注意限制,例如查询字符串的长度)。
我不确定你的目标到底是什么......根据你的目标,解决方案是加密或签署查询字符串或两者。
答案 1 :(得分:1)
您可以在每个帖子中使用此mvc3操作。您只需要确保您的postdata与serverside对象匹配。是的,你必须使用防伪标记来保证安全。
在javascript中,您可以使用jQuery制作这样的帖子。正如您所看到的,我不使用表单,只是一些javascript代码。 Mvc可以完美地处理这个问题。
$.ajax({
type: 'POST',
url: urlToYourMvcAction,
data: {
name: 'John Doe',
age: 25
},
success: successCalback,
error: errorCallback);
public class Person
{
public int Id { get; set; }
public string Name { get; ;set }
public int Age { get; set; }
}
public class PersonController : Controller
{
[HttpPost]
public ActionResult Add(Person person)
{
//Your code
}
}
您可以使用旧版应用程序中的c#WebClient对象轻松发出相同的帖子请求。您可以使用fiddler或开发人员工具检查请求并传入发布所需的正确参数。
哦,使用get请求可以在请求变大时给您带来麻烦。帖子用于将数据发送到服务器。获取用于从服务器获取数据。