2

http://server1:8080/platform/collections/123-456-789HTMLファイルをバイト配列として返すRESTURLがあります。

server2で実行されているJavascriptまたはjQueryを使用してバイト配列応答を取得するにはどうすればよいですか。私は試した

jQuery.ajax({
        url: "http://server1:8080/platform/collections/123-456-789",
        type: "GET",
        dataType: "html",
        crossDomain: true,
        username: "abcd",
        password: "abcd",
        async: true,
        success: function(data) {
            alert("1");
            alert(data);
        },
        error: function (xhr, ajaxOptions, thrownError) {
            alert("error"+xhr.responseText);
            alert("error"+thrownError);
        }
});

私は成功の方法には立ち入りません。バイト配列の応答を正常に取得するにはどうすればよいですか?

編集:

javascriptまたはjqueryを使用してバイト配列の応答を取得する他の方法もありがたいです

4

2 に答える 2

1

複数のサーバー(異なるドメインを持つ)の場合、クロスドメインajaxリクエストを許可するためにCORSを有効にする必要があります。両方のサーバーがあなたの管理下にあるので、それは可能であるはずです。

jQueryを使用してバイナリデータを受信する方法(現在は不可能)については、http://blog.vjeux.com/2011/javascript/jquery-binary-ajax.htmlを参照してください。

于 2012-11-28T12:58:23.307 に答える
0

CORSは新しい方法ですが、jsonpの方が少し簡単かもしれません...

JSONPでは、server1上のファイルをある種のスクリプトでラップする必要があります。これにより、content-typeヘッダーをjavascriptに設定してから、ファイルをJSONエンコードして応答に書き込むことができます。これは、PHPまたはサーバー側のJavaScriptで数行で実行できます。スクリプトが次のようなものを含む「javascriptファイル」を返すようにする必要があります。

document.getElementById('content-holder').innerHTML="<html>this is my file</html>";

クライアント(server2から提供される静的HTMLページ)に、コンテンツホルダーを配置するだけです。

<div id='content-holder'></div>

次に、server1からコンテンツをプルするスクリプト。

<script type="text/javascript">
var getXsS = function(url)
{
    var ss = 's' + 'cr' + 'ip' + 't';
    var cst = document.getElementsByTagName(ss)[document.getElementsByTagName(ss).length-1];
    var ts = 1*new Date();
    var e = document.createElement(ss);
    e.async=1;
    var tsstr = '_ts1_='+ts;
    if((''+url).indexOf('?')==-1){tsstr='?'+tsstr;}else{tsstr='&'+tsstr;}
    var url2 = url+tsstr;
    e.src=url2;
    cst.parentNode.insertBefore(e,cst);
};
getXsS('http://server1:8080/platform/collections/123-456-789');
</script>

server1がSSLを使用している場合、server2もSSLを使用している必要があることに注意してください。

于 2013-08-05T00:23:15.923 に答える