Webプロキシのように機能するサーブレットを作成しました。ただし、Javascript GET呼び出しの中には、ページを読み込んでいるときに元のコンテンツの一部しか返さないものがありますlocalhost:8080/Proxy?requestURL=example.com
。
javaスクリプトのコンテンツをコンソールにプリッティングすると、それらは完了します。ただし、ブラウザでの応答は切り捨てられます。
私はこのように書いています:
ServletOutputStream sos = resp.getOutputStream();
OutputStreamWriter writer = new OutputStreamWriter(sos);
..
String str = content_of_get_request
..
writer.write(str);
writer.flush();
writer.close();
奇妙なことに、次のようにページリクエスト中に読み込まれたJavascriptを直接リクエストすると、次のようになります。
localhost:8080/Proxy?requestURL=anotherexaple.com/needed.js
コンテンツ全体がブラウザに返されます。
誰かがアイデアを持っていたら素晴らしいと思います。よろしく
アップデート:
問題は、応答文字列を作成する方法でした。
while ((line = rd.readLine()) != null)
{
response.append(line);
}
Streamから1行を読み取り、StringBufferに追加しましたが、firefoxとchromeに問題があったようです。一部のブラウザはJavaScriptの最大行長を実装しているようですが、RFCHTTP1.1標準に記載されている最大行長はありません。
修理:
行に「\n」を追加するだけで問題が解決します。
response.append(line+"\n");