来自HttpClient.PostAync()的“断开连接”响应

时间:2013-11-08 21:06:28

标签: c# asp.net httpclient

我正在尝试解决大约6年前编写的旧版asp.net WebForms应用程序的问题。我会尝试解释并希望有人能看到修复。

我们的应用程序支持我们所谓的“API”。实际上,它只是在我们客户网站的页面中显示的几页。我们还提供了一个示例应用程序来说明如何使用它。

示例应用程序有一些表单字段供调用者提供值。提交后,我们会创建一个HTML字符串,其中包含一个标签为

的元素

提交()是关于postgback的表格。

示例:

              ... form1.submit();

只要最终用户将我们的域放入其受信任的站点,此方法就能成功运行。否则,用户将获得权限被拒绝错误。但是,最近,我们有几个客户拒绝将我们添加到可信站点和

希望以另一种方式解决问题。

我尝试过的一种方法是使用HttpClient.PostAsync()来执行上面的表单/脚本,但是从服务器端执行。

public HttpResponseMessage Post(string address, MediaTypeWithQualityHeaderValue acceptType, List<KeyValuePair<string, string>> data)
{
    using (HttpClient client = new HttpClient())
    {
        //client.BaseAddress = new Uri(address);

        client.DefaultRequestHeaders.Accept.Add(acceptType);

        HttpContent content = new FormUrlEncodedContent(data);
        HttpResponseMessage response = client.PostAsync(address, content).Result;

        return response.EnsureSuccessStatusCode();
    }

}

它被称为:

    string hash = GenerateHashValue();
    List<KeyValuePair<string, string>> data = this.BuildPostData(hash);
    MediaTypeWithQualityHeaderValue acceptType = new MediaTypeWithQualityHeaderValue("text/html");
    HttpResponseMessage msg = Post(this.GetPostTargetUrl(), acceptType, data);
    var task = msg.Content.ReadAsStringAsync();
    task.Wait();
    string result = task.Result;
    Response.Write(result);
    Response.End();

响应HTML已成功写入,但它本能地“断开连接” - 之后没有任何作用。通常,使用/ method about use可以在iframe中导航到我们的

上的其他页面

site.Looking它在fiddler中,我看到我在使用current /方法时看到的一些帖子和重定向正在发生,我从我们网站获得了许多javascript文件的404.

有人可以提出另一种方法,我不会有XSS错误而是“连接”iframe吗?

谢谢, 丹

0 个答案:

没有答案