• ベストアンサー

HTTPリクエストヘッダーの設定と遷移

1.HTTPリクエストヘッダーって、任意の項目名で値を設定する事ができるのでしょうか?   その場合、どのような設定方法(タグ?)になるのでしょうか。 2.HTTPリクエストヘッダーにある情報を設定し、   そして、そこから別のページに遷移しその別のページで、遷移前に設定していた   HTTPリクエストヘッダーの情報を読み込みたいのですが、実現可能でしょうか?   また可能な場合、例えば、Javascript、HTMLなんかを利用して可能でしょうか? 初歩的な事かも知れませんが、よく分からず困ってます。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.1

1.HTMLだけでFORMやAタグにに何か追加するだけで実現可能かと言うことであれば不可能です。 JavaScriptを使う XMLHttpRequest() であれば可能です。 2.サーバーサイドでプログラムを動かせば可能です。 そもそも何をしたいのかを具体的に書くと、良いアドバイスが得られる可能性があります。 つまり、 >HTTPリクエストヘッダーにある情報を設定し、 >そして、そこから別のページに遷移しその別のページで、遷移前に設定していた >HTTPリクエストヘッダーの情報を読み込みたい によって何をしたいかです。

evaan
質問者

お礼

色々とご回答どうもありがとうございました。 なんとか上手くいきそうな感じになってきてます。

evaan
質問者

補足

ご回答どうもありがとうございます。 何がしたいかといいますと シングルサインオンのようなものなのですが。 例えばあるサイトにいて、そこでユーザーとパスワードを保持。 クリックなどのイベントで遷移先に飛びます。 遷移先ではHTTPリクエストヘッダーに設定されているユーザーとパスワードから認証。 ここで遷移先はプログラムで既に用意されてたりするのですが、 遷移元に関してはなにもなく、 遷移元をどのように作成するかという所で悩んでます。 遷移元の機能としては、遷移先に飛んで情報を渡すという所になります。 よろしくお願いします。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.4

No2です。 >遷移先はリクエストヘッダから取得するのですが、そこのプログラムや仕組みは >都合上、変更する事ができなくて。 遷移先のプログラムを変更できないなら、この話は最初から無理だと思いますよ。 「あるサイトAで、ログイン操作をすることなく、別サイトBから、そのサイトAにログインしたかのようにデータを送り込む」って、別の言い方をすると、「サイトAに脆弱性があって、その脆弱性を突いて別のサイトBから攻撃する」ってことです。 シングルサインオンは両方のサイトが協調しないと無理です。

evaan
質問者

補足

ご回答誠にありがとうございます。また他に回等頂いた皆様もどうもありがとうございます。 cookie、OAuthあたりは、まだよく分かってないのですが、 まずは、XMLHttpRequestを使ってリクエストするのをちょっと試してみました。 ------------------------- <html> <head> <link rel="stylesheet" type="text/css" hfef="style.css"> <script> <!-- var req; function addHeaderRequest() { req = new XMLHttpRequest(); req.open("Get", "http://www.yahoo.co.jp/", false); req.setRequestHeader("Content-Type" , "application/x-www-form-urlencoded"); req.setRequestHeader("dounaru","katsuzo"); req.onreadystatechange = callback; req.send(null); } function callback() { if (req.readyState == 4) { if (req.status == 200) { var myHeader = document.getElementById('myHeader'); myHeader.value = req.responseText; var tNode = document.createTextNode(req.responseText); myHeader.appendChild(tNode); } } } --> </script> <title> テスト </title> </head> <body> フィールド名<input type="text" value="aaaaaa" id="addHeaderName" name="addHeaderName"> フィールド値<input type="text" value="111111" id="addHeaderValue" name="addHeaderValue"> <input type="button" value="送信" id="runAjax" name="runAjax" onclick="addHeaderRequest();"> <br> <!-- <input type="text" readonly id="myHeader" size="50"> --> リクエストしたヘッダーか: <span id="myHeader"> </span> </body> </html> ------------------------- これで画面にあるボタンを押すと、応答したのが画面に表示されてるようです。 この時ですが、 ・画面遷移(この場合yahooのページに飛ぶ)もしたいのですが、可能なのでしょうか? ・setRequestHeaderで、"dounaru","katsuzo"というのを設定したつもりなのですが、  応答したものには表示されていません。HTTPリクエストヘッダーには設定されたのでしょうか?  (この場合、yahooのサーバーサイドでHTTPリクエストヘッダーの"dounaru","katsuzo"を   読み取れるのでしょうか?) よろしくお願いします。

すると、全ての回答が全文表示されます。
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.3

>例えばあるサイトにいて、そこでユーザーとパスワードを保持。クリックなどのイベントで遷移先に飛びます。 「あるサイト」があなたの管理下にあるなら、cookieを使うのが楽でしょう。色々なところで使われていますね。ショッピングサイトから銀行やクレジット会社にリンクするときなど  動的なページなら--当然そのはずですが---「あるページ」を出力する段階でset-cookieヘッダで、NAME(必須)、expires、domain、pathで指定しておきます。javascriptなら document.cookie = "~"; ですね。  ちろん、普通にPATH_INFOやQuery_String、標準入力も可能ですがセキュリティの問題からお勧めしません。 <a href="http://hoge.com/cgi-bin/abc/evaan /123456/">次のページ</a> <form action="http://hoge.com/cgi-bin/abc" method="get | post">いずれか <input type="submit" value="次のページ"></form>としてスタイルシートで普通のリンクにデザインする。  

すると、全ての回答が全文表示されます。
  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.2

>シングルサインオンのようなものなのですが。 ああ、HTMLだけで何かしたいと無理なことをいっているのかと思ってました。 サーバーサイドにもプログラムがあるわけですね。 両方が同じドメイン・・・・foo.example.com と bar.example.com・・・・の場合は、普通にCookieが使えます。 全く異なるドメイン・・・・foo.example.comとbar.example.jp・・・・の場合は、OAuthのライブラリとかを使えば良いかと思います。

evaan
質問者

補足

すみません。ご回答誠にありがとうございます。 CookieやOAuthのライブラリ は遷移元で設定するのでしょうか? 遷移先はリクエストヘッダから取得するのですが、そこのプログラムや仕組みは 都合上、変更する事ができなくて。 また、例えばXMLHttpRequestなどを使い、そこで遷移先に飛んだりsubmitするような事でも 実現可能でしょうか? 質問が何かおかしかったらすみません。 よろしくお願いします。

すると、全ての回答が全文表示されます。

関連するQ&A