2017-09-25 126 views
0

我试图获取以编程方式创建的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文件,并添加一个提交按钮的话,我可以提交这样的外部网站所以我能够接受JSon-Response并正确提取所有信息。

我曾尝试:

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

回答

0

现在我实现了一个解决办法,这也许是帮助他人(但也许这个答案是downvoted被遗忘,因为它是这样一个可怕的黑客):

我在子文件夹中创建一个新的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数据就完成了。

这对我而言很有效,因为无论如何,用户都会被重定向到外部网站,在最好的情况下,他/他甚至不会注意到重定向到这个中间网站,即使发现该网页也不会不包含用户不知道的任何内容,再加上HTML文件中的数据不敏感,这些数据必须由用户在外部网站上输入,因此这里没有可能的安全漏洞。至少我现在无法想到。

相关问题