web-dev-qa-db-ja.com

開きたい新しいウィンドウにPOSTできますか?

これは可能ですか?

  1. サードパーティのサイトが私のDrupalモジュールを実行しています
  2. エンドユーザーは次のリンクをクリックします。
  3. 新しいウィンドウを開きますwww.mysite.com/redirect.php
  4. およびPOST特定のデータをこのページにwww.mysite.com/redirect.php

ユーザーのブラウザがリダイレクトされるのを見てきましたが、上記の方法については明確ではありません。

1
siliconpi

POSTで要求されたページを新しいウィンドウで開くリンクが必要な場合は、いくつかのアイデアがあります。ただし、POSTリクエストはブックマークできないことに注意してください。

  • 新しいウィンドウでPOST要求されたページを開くボタンを作成できます。

    <form method="post" action="http://example.com/example.php"
      target="_blank">
    <input type="hidden" name="name1" value="value1">
    <input type="hidden" name="name2" value="value2">
    <input type="submit" value="Open results in a new window"> 
    </form>
    
  • リンクのように見せたい場合は、フォームを送信するonClick属性を使用してリンクを作成できます。

    <form name="myform" method="post" action="http://example.com/example.php"
      target="_blank">
    <input type="hidden" name="name1" value="value1">
    <input type="hidden" name="name2" value="value2">
    </form>
    
    <a href="http://example.com/example.php"
      onClick="document.forms['myform'].submit(); return false;">Open results
      in a new window</a>
    

    OnClickパーツはフォームを送信し、新しいウィンドウでPOST要求されたページを開きます。 return falseは、ブラウザが現在のウィンドウのhrefアドレスにも同時にアクセスするのを防ぎます。 JavaScriptが無効になっている場合、またはリンクがブックマークされている場合、hrefアドレスはフォールバックとして使用されますが、結果のページはPOST値を受け取りません。これは、ユーザーがリンクをブックマークする場合、ユーザーを混乱させるか、ユーザーに不親切になる可能性があります。

リンクをブックマーク可能にする場合は、ページがGETパラメーターを受け入れることができるかどうかを調査します。その場合、ブックマーク可能なリンクを作成できます。

 <a href="http://example.com/example.php?name1=value1&name2=value2"
   target="_blank">Open results in a new window</a>
6
Bavi_H