0

異なるドメインでユーザー名とパスワードを投稿する際に問題が発生しています。一方はフォームを正常に送信し、もう一方は送信しません(フォームデータは空です)。両方のドメインのhtmlコードは同じです。これがサンプルコードです-コメントされたドメインは投稿しません:どんな助けでも大歓迎です!

注:nginxで実行されているドメインはデータを正常に投稿しますが、apacheで実行されているドメインは、サーバーと関係がある場合はそうではありません。

 public class CookieAwareWebClient : System.Net.WebClient
{
    private System.Net.CookieContainer Cookies = new System.Net.CookieContainer();

    protected override System.Net.WebRequest GetWebRequest(Uri address)
    {
        System.Net.WebRequest request = base.GetWebRequest(address);
        if (request is System.Net.HttpWebRequest)
        {
            var hwr = request as System.Net.HttpWebRequest;
            hwr.CookieContainer = Cookies;
        }
        return request;
    }
}

# Main function
NameValueCollection postData = new NameValueCollection();
postData.Add("username", "abcd");
postData.Add("password", "efgh");

var wc = new CookieAwareWebClient();
//string url = "https://abcd.example.com/service/login/";
string url = "https://efgh.example.com/service/login/";

wc.DownloadString(url);

//writer.WriteLine(wc.ResponseHeaders);
Console.WriteLine(wc.ResponseHeaders);

byte[] results = wc.UploadValues(url, postData);
string text = System.Text.Encoding.ASCII.GetString(results);

Console.WriteLine(text);
4

1 に答える 1

1

問題は、Apache で適切に処理されなかったプログラムを介して要求が行われるたびに、Expect100Continue ヘッダーが自動的に追加されることにありました。次の方法でリクエストが行われるたびに、Expect100Continue を false に設定する必要があります。Amazon EC2 インスタンスの dumpcap ツールで確認できましたが、Fiddler のリードに感謝します! これが解決策です!

# Main function
NameValueCollection postData = new NameValueCollection();  
postData.Add("username", "abcd");
postData.Add("password", "efgh");


var wc = new CookieAwareWebClient();
var uri = new Uri("https://abcd.example.com/service/login/");
var servicePoint = ServicePointManager.FindServicePoint(uri);
servicePoint.Expect100Continue = false;

wc.DownloadString(uri);

Console.WriteLine(wc.ResponseHeaders);

byte[] results = wc.UploadValues(uri, postData);
string text = System.Text.Encoding.ASCII.GetString(results);
Console.WriteLine(text);
于 2012-11-21T19:23:23.267 に答える