QTWebKit クライアントを経由せずに PhantomJS (または CasperJS) でファイルをダウンロードする方法はありますか?
テスト対象のページとは関係のない URL から、JSON でエンコードされたデータをダウンロードしたいと考えています。
PhantomJS API または CasperJS API の機能は、不気味なクライアントで URL を開くことを目的としているように見えるため、これを行う方法は明らかではありません。
次のようなものを単純に実行できると思います。
fetch(URL, callback);
PhantomJs ページにダウンロードしてからクライアントにダウンロードするという通常の手順には、2 つの理由で問題があります。まず、遅くて面倒です。2 つ目は、同一生成元ポリシーに違反しています (そのため、CasperJS のbase64encode関数は機能しません)。
基本的には、PhantomJS クライアント用の JavaScript ランナーが XMLHttpRequest (またはそれに類するもの) を実装することを期待していますが、もう少し標準的なものが利用できるのではないかと思います。
編集
おそらく、jQuery を含めて を使用することもできます$.ajax
が、残念ながら、同じオリジンの例外もスローされます。
XMLHttpRequest はhttp://example.com:5000/testを読み込めません。オリジン file:// は Access-Control-Allow-Origin で許可されていません。
私が思いつく唯一の解決策は、JSON でアクセスしたいファイルを別のプロセス (wget などを使用) でダウンロードすることですが、PhantomJSはプロセスの実行を許可していないため(この記事の執筆時点)、 PhantomJS とは別に開始する必要があります。