web-dev-qa-db-ja.com

POSTフォームにヘッダーフィールドを設定する方法

フォームの送信時にPOSTヘッダーにカスタムフィールドを設定するにはどうすればよいですか?

81
Reza Owliaei

それはできません-私の知る限り。

ただし、たとえばjqueryを使用して(プレーンJavaScriptで実行できますが)、フォームをシリアル化し、カスタムヘッダーを追加しながら送信(AJAXを使用)することができます。

Jquery serialize を見てください。これは、HTML FORMをPOSTの準備ができているform-url-encoded値に変更します。

更新

私の提案は、どちらかを含めることです

  • 隠されたフォーム要素
  • クエリ文字列パラメーター
54
Aliostad

ページにCookieの値を設定し、サーバー側に読み戻します。

特定のヘッダーを設定することはできませんが、コンテンツ本文ではなくヘッダーセクションで値にアクセスできます。

13
Chris Hynes

FormData ドキュメントから:

XMLHttpRequest Level 2は、新しいFormDataインターフェイスのサポートを追加します。 FormDataオブジェクトは、フォームフィールドとその値を表すキー/値ペアのセットを簡単に構築する方法を提供し、XMLHttpRequestsend()メソッドを使用して簡単に送信できます。

XMLHttpRequestを使用すると、カスタムヘッダーを設定してからPOSTを実行できます。

3
Majid

実際、クライアント側でCookieを保存するためのより良い方法です。その後、特定のドメインのすべてのページヘッダーとともにCookieが自動的に送信されます。

Node-jsでは、 cookie-parser でCookieを設定して使用できます。

例:

res.cookie('token', "xyz....", { httpOnly: true });

これでアクセスできます:

app.get('/',function(req, res){
 var token = req.cookies.token
});

httpOnly:trueは、Cookieが通常手動またはjavascriptを介してアクセスできないようにし、ブラウザのみがアクセスできるようにすることに注意してください。 ajaxではなく、フォームポストでヘッダーまたはセキュリティトークンを送信する場合、ほとんどの場合、これは安全な方法と見なすことができます。ただし、通常は機密性の高いユーザー関連情報を保存している場合は、データが安全なプロトコル/ sslを介して送信されていることを確認してください。

2
Ramesh Pareek

これが私がパブ/ジェイドでやったことです

extends layout
block content
    script(src="/jquery/dist/jquery.js")
    script.
      function doThePost() {
        var jqXHR = $.ajax({ 
            type:'post'
            , url:<blabla>
            , headers: { 
                'x-custom1': 'blabla'
                , 'x-custom2': 'blabla'
                , 'content-type': 'application/json'
            }
            , data: {
                'id': 123456, blabla
            }
        })
        .done(function(data, status, req) { console.log("done", data, status, req); })
        .fail(function(req, status, err) { console.log("fail", req, status, err); });
      }
    h1= title
    button(onclick='doThePost()') Click
1
Steve

<form method="POST">の自然な動作を避けるために、$。ajaxを使用できます。たとえば、送信ボタンにイベントを追加し、POSTリクエストをAJAXとして扱うことができます。

0
Fabio Buda