我有一些遗留应用程序,它们当前正在将基本信息发布到MVC3表单。我想把它分离到一个GET中,并在querystring中传递这些值。很简单。但是,我想在请求中添加一个防伪令牌。首先,这看起来是一个好的选择吗?其次,有没有将这种功能从非MVC3模块实现到MVC3表单的示例?
我的另一种选择是加密查询字符串。
发布于 2012-10-16 01:33:05
由ASP.NET实现防伪令牌旨在作为一种防止CSRF (交叉站点请求伪造)的机制,且仅与HTTP POST一起工作。
因为你正在实现一个基于GET的"API“,所以这个令牌不起作用(注意限制,比如查询字符串的长度)。
我不确定你的目标到底是什么。根据您的目标,解决方案是加密或签名查询字符串,或者两者兼而有之。
发布于 2012-10-16 01:33:15
你可以把你想要的每一个帖子都放到这个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对象发出相同的post请求。您可以使用fiddler或开发人员工具来检查请求,并传入创建post所需的正确参数。
哦,当请求越来越大时,使用get请求可能会给您带来麻烦。Posts用于将数据发送到服务器。Gets用于从服务器获取数据。
https://stackoverflow.com/questions/12900741
复制相似问题