- PR -

HttpWebRequestにCookieを設定する

1
投稿者投稿内容
空条Q太郎
会議室デビュー日: 2003/11/06
投稿数: 19
投稿日時: 2004-03-13 23:32
いつもお世話になっております。

認証の仕組みにCookieでチケットを発行するためCookieについて調査し
なんとか実装できました。

ところが調査中に
"最初のリクエスト時"にクライアント(VB.NET)でCookieに値をセットし
サーバ(JAVA)でCookieの値を取得しようとしましたがサーバで

Cookie[] cookies = null;
cookies = リクエスト.getCookies();

とするとcookiesはnullで値が取得できません。

VB.NETソースです。
------------------------------------------------------
'変数宣言
Dim req As HttpWebRequest
Dim cookies as CookieCollection
Dim cookie as Cookie

'ネットワーク設定
req = CType(WebRequest.Create("URL"), HttpWebRequest)

'CookieConteinerインスタンス作成
req.CookieContainer = New CookieContainer()

'Cookieに格納する
cookies = New CookieCollection()
cookie = New Cookie("Test", "test")
cookie.Domain = "ドメイン"
cookies.Add(cookie)

'リクエストにCookieを設定する
req.CookieContainer.Add(cookies)
------------------------------------------------------

Cookieのプロパティ設定が間違っているのでしょうか。
それとも私のやろうとしていることはできないのでしょうか。

勉強のためにもはっきりしたいので宜しくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-03-15 18:23
詳しくはないのですが、記述に2〜3疑問があったので:
引用:

空条Q太郎さんの書き込み (2004-03-13 23:32) より:

ところが調査中に
"最初のリクエスト時"にクライアント(VB.NET)でCookieに値をセットし
サーバ(JAVA)でCookieの値を取得しようとしましたがサーバで


1.「サーバ」と「クライアント」が、それぞれを何をするか、わかりません
2.Cookieは「サーバ」が設定するものだと思っていたのですが、
  クライアントでも設定できるのですか?
3.「最初は」ということは、「2回目以降」は取得できるのでしょうか
 3−1.取得できるのなら、その値はどこで設定したものでしょう?
空条Q太郎
会議室デビュー日: 2003/11/06
投稿数: 19
投稿日時: 2004-03-16 18:06
Jittaさんご返答ありがとうございました
遅くなりすみませんでした。

先ず結果をご報告致しますします。解決致しました。
CookieのDomainプロパティのドメインを間違えておりました。

引用:

1.「サーバ」と「クライアント」が、それぞれを何をするか、わかりません


@クライアントでCookieにユーザ・パスワード情報をつけてサーバにリクエスト

Aサーバでユーザ・パスワード情報を元に認証チケットを発行しCookieに設定

BクライアントでCookieを取得しクライアントのメモリ上に格納

C二回目以降のリクエストはクライアントのメモリ上のCookieをrequestに設定

DサーバでCookieの認証チケットを元にチェック



となります。
Cookieをクライアントのメモリ上に格納しているのは
ブラウザを使用していないからです。

今は@のユーザ・パスワードをXMLで渡していますが
@でrequestにCookieをつけて渡せるか調べていました。
"初回"とは@のことです。

引用:

2.Cookieは「サーバ」が設定するものだと思っていたのですが、
  クライアントでも設定できるのですか?


MSDNでHttpWebRequestのCookieContainerプロパティが
"要求に関連付けられているCookieを取得または設定します。"
ということなので、Cookieプロパティを設定し(前述ソース)
CookieContaierに設定すれば可能なのかと思い調査していました。

引用:

3.「最初は」ということは、「2回目以降」は取得できるのでしょうか
 3−1.取得できるのなら、その値はどこで設定したものでしょう?


最初のリクエストに対してサーバでレスポンスにCookieを設定していますので取得できます。


ご返答が遅くなり大変申し訳ございませんでした。
1

スキルアップ/キャリアアップ(JOB@IT)