将表单重新发布到不同的操作(不是来自我的网站)并添加其他数据

发布于 2024-12-11 12:39:59 字数 570 浏览 0 评论 0原文

我想这样做是因为我需要发布到国外网站,并且希望避免在表单内设置隐藏输入,因为用户可能会更改其中的值(或者其他人可能会为他这样做)

我的html :

<form action="<%=Url.Action("prepare") %>" >
<input type="submit" value="submit" />
</form>

和我的行动

[HttpPost]
public ActionResult Prepare()
{
   if(Request.IsAuthenticated)
   {
      //post to "http://example.com/do" 
      //and add to the request userId = User.Identity.Name
      return //the result of the repost
   }
   else 
   {
      return RedirectToAction("youneedtobeloggedin",);
   }
}

I would like to do this because I need to post to a foreign site, and would like to avoid setting a hidden input inside the form because the user might change the value inside of it (or somebody else might do it for him)

my html:

<form action="<%=Url.Action("prepare") %>" >
<input type="submit" value="submit" />
</form>

and my Action

[HttpPost]
public ActionResult Prepare()
{
   if(Request.IsAuthenticated)
   {
      //post to "http://example.com/do" 
      //and add to the request userId = User.Identity.Name
      return //the result of the repost
   }
   else 
   {
      return RedirectToAction("youneedtobeloggedin",);
   }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

月下伊人醉 2024-12-18 12:39:59

如果您想将所有内容保留在服务器端,可以查看此处。这是一种以编程方式执行 POST 的简单方法。通过这种方式,您将在所有服务器端处理外部 POST。请注意,这将使您的服务器执行 POST。

在您的控制器中,您可以执行以下操作:

[HttpGet]
public string MyActionPostingToRemote() 
{
  string postResult = HttpPost (remoteUrl, remotePostQueryString);
  return postResult;
}

HttpPost 是您可以在我的链接中找到的函数。

If you want to keep everything server side, you can take a look at here. It's a simple way to perform POSTs programmatically. In this way you'll handle external POSTs all server side. Please beware that this will make your server perform the POST.

In your controller you can have this Action:

[HttpGet]
public string MyActionPostingToRemote() 
{
  string postResult = HttpPost (remoteUrl, remotePostQueryString);
  return postResult;
}

The HttpPost is the function you can find in my link.

一腔孤↑勇 2024-12-18 12:39:59

现代浏览器不允许跨站点调用。因为安全。

Cross-site calls are not allowed by modern browsers. Because of security.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文