我有一些遗留应用程序当前正在将基本信息发布到 MVC3 表单。我想将其分离到 GET 并传递查询字符串中的值。很容易。但是,我想在请求中添加一个防伪令牌。首先,这似乎是一个不错的选择吗?其次,是否有从非 MVC3 模块到 MVC3 表单实现此类功能的示例?
我的另一种选择是加密查询字符串。
我有一些遗留应用程序当前正在将基本信息发布到 MVC3 表单。我想将其分离到 GET 并传递查询字符串中的值。很容易。但是,我想在请求中添加一个防伪令牌。首先,这似乎是一个不错的选择吗?其次,是否有从非 MVC3 模块到 MVC3 表单实现此类功能的示例?
我的另一种选择是加密查询字符串。
由 ASP.NET 实现的 Anti-Forgery Token 旨在作为一种防止 CSRF(即 corss-site-request-forgery)的机制,并且仅适用于 HTTP POST
。
由于您正在实现GET
基于“API”的此令牌将不起作用(请注意限制,例如查询字符串的长度)。
我不确定您的目标到底是什么......根据您的目标,解决方案是加密或签署查询字符串或两者兼而有之。
你可以在这个 mvc3 动作中发布你想要的每个帖子。您只需确保您的 postdata 与服务器端对象匹配。是的,为了安全起见,您必须使用防伪令牌。
例如,在 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 或开发人员工具来检查请求并传入发布帖子所需的正确参数。
哦,当请求变大时,使用获取请求会给您带来麻烦。帖子是用来发送数据到服务器的。Gets 用于从服务器获取数据。