34


8

URLを取得するときに、どのようにWebブラウザにPOSTを強制させるのですか?

11 回答


30


メソッドとしてpostを指定したHTMLフォームを使用してください。

...

リンクとして機能させるために_推奨_しない場合(推奨されません)、onclickハンドラに動的にフォームを構築して送信させることができます。

function submitAsPost(url){var postForm = document.createElement( 'form'); postForm.action = url; postForm.method = 'post'; var bodyTag = document.getElementsByTagName( 'body')[0]; bodyTag.appendChild(postForm); postForm.submit(); }

これは私の投稿リンクです

サーバー側でこれを強制する必要がある場合はHTTPメソッドをチェックし、それがPOSTと等しくない場合は http://www.checkupdown.com/status/E405.html[HTTP 405レスポンスコードを送信しますブラウザに戻って終了します。 それをどのように実装するかはあなたのプログラミング言語/フレームワークなどに依存します。


21



URLを取得しているのであれば、POSTではなく、取得しているのです。 あなたは確かにブラウザにそのロケーションバーを介してPOSTリクエストを発行させることはできません。


10


あなたの質問から、ブラウザのアドレスバーに投稿リクエストを送信することを望んでいただけなのですが。

アドレスバーに次のように入力するだけで、 'action’の値が好きなURLに置き換えられます。

データ:text / html、

これは無効なHTMLですが、ブラウザ(少なくともこれまでにテストしたすべてのブラウザ)はあなたが何を意味するのか知っているので、できるだけ短くすることを望みました。

値を投稿したい場合は、好きなだけ入力を追加し、各入力の名前と値を好きなように入れ替えます。


あなたが投稿した機密情報は次の場所に表示されることに注意してください。

  • あなたの歴史

  • あなたのアドレスバー

  • あなたのブラウザのオートコンプリート。

  • 同じタブからアクセスした他のサイト

  • おそらく他にもたくさんのこと

投稿リクエストを送信するのは本当に悪い方法で、他のすべての答えははるかに優れていますが、それでもあなたがそれを行えるのはクールです。


4


あなたが何かをテストしようとしているなら、私はあなたのhttpリクエストを作り出すために Fiddlerを使うことを勧めます。 内容を要求するだけでなく、動詞(GET、POST、PUT、DELETEなど)も指定できます。 リンクからではなくPOSTを使用して特定のリクエストをテストしようとしている場合は、ブラウザが行っているリクエストを監視し、修正されたPOSTアクションを使用してのみ再発行できます。


4


あなたは、どのWebブラウザにもPOSTヘッダ付きのURLを送信させることはできません。 しかし、POSTリクエストのURLをテストするには、 chromeおよびhttps://addons.mozilla.org/jaの「POSTER」拡張子を推奨します。 -US / firefox / addon / poster / [mozilla]


3


上記のsubmitAsPost()関数は優れた洗練された解決策ですが、問題があります - URLが長すぎる場合(FirefoxやIEを含む)一部のブラウザはエラーを返します。 私たちの多くは、この制限を回避するためにPOSTを使用しているので、私はこの解決策を提案します。

// submit a URL using post
関数submitAsPost(url){var bodyTag = document.getElementsByTagName( 'body')[0] var postForm = document.createElement( 'form'); bodyTag.appendChild(postForm); postForm.method = 'POST';

var serverAndParams = url.split( "?"); postForm.action = serverAndParams [0]; var params = null。 {var paramsAndHash = serverAndParams [1] .split( "#");を試してください。 params = paramsAndHash [0]; var attrList = params.split( "

postForm.submit(); bodyTag.removeChild(postForm); }

Firefox、Chrome、IEでテスト済み。


2


あなたはテストのためにツールを使うことができます。 私はいつもあなたと同じ質問をしています。 オンラインで入手できるツールはかなりたくさんあります。 これが私が使うツールです:http://www.hurl.it/


1


私はこの質問が古くなっていることを知っていますが、誰かがこれが役に立つと思うかもしれません。 URLに投稿するには、cURL(http://curl.haxx.se/)のようなコマンドラインツールを使用できます。

例:

curl -v  - 基本 - ユーザー名:パスワード - 要求POST "http://www.theurltopostto.com"


1


これはもう少し遅れたゲームですが、私はこれに遭遇し、HTML 5がいくつかの変更を加えたことを知りました。 inputタグを使ってformmethodを追加することができます(つまりpostを選択します)。 これは私のために働きました。


0


あなたがするのに問題があるならば:

request.open( 'POST'、url、true); request.setRequestHeader( "コンテンツタイプ"、 "アプリケーション/ x-www-form-urlencoded"); request.send( "data =" JSON.stringify(data));

そして開発ツールでは、GETを実行していることがまだわかります。つまり、URLは次の形式になっています。

それがあるべきことを意味する:

その非常に奇妙なエラーはあなたの質問と関係ないかもしれませんが、私はそれを数回持っていました、そしてそれは深刻に危険に見えるのでそこにあるべきです。 Ubuntu 14.04でApache 2サーバーを使用しているときに、あまり設定はされていませんでした。