如何以编程方式从代码隐藏提交表单到外部站点

How to submit a form programmatically from code behind to an external site

我尝试将以编程方式创建的 HtmlForm 的值获取到外部站点。此站点要求数据以 POST 形式发送,因为它可能包含敏感信息。

我从这样的 JSon 响应生成 HtmlForm

JObject jsonResponseActionData = (JObject)joResponse["action_data"];
var redirectURL = (JValue)jsonResponseActionData["url"];

HtmlForm form= new HtmlForm {
    Method = "post",
    Action = redirectURL.ToString()
};

var inputTypeString = "<input type=\"text\" name=\"inputName\" value=\"inputValue\">";
foreach (var obj in jsonResponseFields) {
    if (obj.Value.ToString() == "") {
        form.InnerHtml += inputTypeString.Replace("inputName", obj.Key).Replace("inputValue", "").Replace(">", " disabled >");
    } else {
        form.InnerHtml += inputTypeString.Replace("inputName", obj.Key).Replace("inputValue", obj.Value.ToString());
    }
}

如果我像这样将其写入 HTML-File 并向其添加提交按钮,我可以将其成功提交到外部站点,因此我可以接受 JSon -正确响应并从那里提取所有信息。

我尝试过的:

如何将生成的表单提交到外部站点?请注意,该网站确实需要我提交表格,因此任何其他不涉及提交表格的解决方案都没有建设性。

我现在实施了一个解决方法,也许这对其他人有帮助(但也许这个答案被否决了,因为它太糟糕了?):

我在子文件夹中创建了一个新的 HTML 页面。此子文件夹受 Web.config.htaccess 保护(因为我没有找到禁止调用 *.html-files in Web.config 的方法),这意味着文件不能从外部来源列出的文件也无法查看,即使您知道文件名。

此 HTML 页面仅包含我要提交的表单和一些 JavaScript,它会在页面加载时自动点击提交按钮:

<head>
    <script>
        function clickButton(){
            document.getElementById("submitForm").click();
    </script>
</head>
<body onload="clickButton()">
    <!--Actual content goes here-->
</body>

然后我将用户重定向到该页面:

Response.Redirect(pageName);

一旦 JSON 数据处理完成。

这对我来说是有效的,因为无论如何用户都会被重定向到外部站点,在最好的情况下 s/he 甚至不会注意到重定向到这个中间站点,即使它被注意到了,该页面不包含用户不知道的任何内容,加上 HTML 文件中的数据不敏感,该数据必须由用户在外部站点上输入,因此没有可能的安全性突破这里。至少none我现在能想到的。