0

フォーム認証を使用するWebサイトにブラウザウィンドウ(おそらくIEに固執する可能性があります)を開く必要があるアプリケーションを作成しています。秘訣は、アクセスする必要のあるサイトの数が非常に多いために時間を節約するために、それらをすでに認証する必要があるということです。(最終的には、それらをスクリーンスクレイピングしてデータを処理します...しかし、必要なときにクリックして実際のサイトにアクセスできるように、認証部分を機能させる必要があります。)

HttpWebRequestを使用してhtmlを取得し、それをブラウザーに渡すことができるという点で、FormsAuthenticationの部分が機能しています。ただし、実際のWebサイトに移動できるように、Cookieをクライアントブラウザに転送することはできません。

認証用のSystem.Net.Cookiesを取得しており、それらをSystem.Web.HttpCookiesにコピーして、Responseオブジェクトに追加してみました。ページにリンクを配置するか、Response.Redirectを使用してWebサイトに移動すると、機能しません。ユーザーが認証されていないかのように動作します。

誰かが私がこれをどのようにやってのけるのか考えていますか?

これをより明確にするために、現在のコードは次のとおりです。

Dictionary<string, string> formValues = new Dictionary<string, string>(4);
        formValues.Add("txbUserName", "USERNAME");
        formValues.Add("txbPassword", "PASSWORD");
        formValues.Add("SubmitB", "Log In");

        HttpWebRequest webRequest;
        StreamReader responseReader;
        string responseData;

        //This authenticates an HttpWebRequest and returns it
        webRequest = FormsAuthHttpWebRequest.Create("REQUESTURI", "LOGINURI", 
                                                    formValues) as HttpWebRequest;

        responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());

        responseData = responseReader.ReadToEnd();
        responseReader.Close();

        foreach (Cookie cookie in webRequest.CookieContainer.GetCookies(new Uri("SITEURI")))
        {
            HttpCookie httpCookie = new HttpCookie(cookie.Name, cookie.Value)
            {
                Domain = cookie.Domain,
                Expires = cookie.Expires,
                Path = cookie.Path,
                HttpOnly = cookie.HttpOnly,
                Secure = cookie.Secure                 
            };

            Response.Cookies.Add(httpCookie);
        }


        Response.Redirect("REQUESTURI");
4

2 に答える 2

3

私はあなたがこれを行うことができるとは思わない。ブラウザーは、Cookie に関連付けられたドメインに属していない Web サーバーからの「Add-Cookie」ヘッダーを無視します。これは、Cookie の組み込みセキュリティの一部です。他の Web サイトが別のドメインの Cookie を読み書きできると、(セキュリティとプライバシーの観点から) 壊滅的です。

于 2008-12-02T23:46:38.177 に答える
0

Response.Redirect が差し迫っているため、ブラウザーが応答ヘッダーの Cookie を無視している可能性があると思います。私たちは最近その問題に遭遇し、FF は Cookie を受け入れましたが、IE6 と 7 は受け入れなかったことがわかりました。

ただし、あなたが何をしようとしているのか正確に理解しているかどうかはわかりません。実際にはサイト B 向けの Cookie をサイト A からブラウザに送信しようとしていますか?

于 2008-12-02T23:31:20.173 に答える