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

时间:2017-09-25 15:47:02

标签: asp.net forms code-behind

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

我从JSon-Response生成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文件并向其添加提交按钮,我可以成功将其提交到外部网站,这样我就可以获取JSon-Response并从中正确提取所有信息

我尝试过:

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

1 个答案:

答案 0 :(得分:0)

我现在实施了一个解决方法,也许这对其他人有帮助(但也许这个答案被遗忘,因为它是如此糟糕的黑客?):

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

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

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

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

Response.Redirect(pageName);

完成JSON数据的处理后。

这将在我的情况下工作,因为无论如何用户被重定向到外部站点,在最好的情况下,他/她甚至不会注意到重定向到这个中间站点,即使它被注意到,页面也没有t包含用户不知道的任何内容,加上HTML文件中的数据不敏感,用户必须在外部网站上输入此数据,因此此处不存在安全漏洞。至少我现在无法想到。