31

Html5 Server Sent Events を使用しています。サーバー側は Java Servlet です。サーバーに渡したいjson配列データがあります。

var source = new EventSource("../GetPointVal?id=100&jsondata=" + JSON.stringify(data));

配列のサイズが小さい場合、サーバー側はクエリ文字列を取得できます。ただし、配列のサイズが大きい場合。(おそらく数千文字以上)、サーバーはクエリ文字列を取得できません。POST メソッドを使用しnew EventSource(...)て、クエリ文字列の長さの制限を回避できるサーバーに json 配列を渡すことは可能ですか?

4

3 に答える 3

36

いいえ、SSE 標準では POST は許可されていません。

(技術的な理由はありませんが、私が知る限り、設計者がユースケースを見たことがなかっただけだと思います:それは単なる大きなデータではありませんが、カスタム認証スキームを実行したい場合はセキュリティ上の理由から、GET データにパスワードを入れないでください。)

XMLHttpRequest(すなわち AJAX) は POST を許可するので、1 つのオプションは古い long-poll/comet メソッドに戻ることです。(私の著書Data Push Apps with HTML5 SSE では、これを行う方法についてかなり詳しく説明しています。)

もう 1 つの方法は、POSTすべてのデータを事前に に格納し、それを に保存してから、HttpSessionそのセッション データを利用できる SSE プロセスを呼び出すことです。(SSE は Cookie をサポートしているため、JSESSIONIDCookie は正常に機能するはずです。)

PS標準では、POSTを使用できないと明示的に述べていません。ただし、 とは異なりXMLHttpRequest、使用する http メソッドを指定するパラメーターはなく、投稿するデータを指定する方法もありません。

于 2015-12-15T09:32:58.190 に答える