-1

サイトで Firebug を使用していると、次の JSON POST リクエストに気付きました。

POST /xxxx/yyy
Host test.it
User-Agent Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,application/json
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
Content-Type text/plain; charset=UTF-8
Referer http://test.it/preview/2.1284/2.1988/2.16289
Content-Length 186
Cookie userId=61080064567894730d450a494fee0af5
Pragma no-cache
Cache-Control no-cache

{id:4,method:"contentBridge.setComponentValue",params:["7.92961", "name", "Welcome", "", {"javaClass": "java.util.HashMap", "map": {"en": false, "es": false, "de": false, "fr": false}}]}

問題は、彼らが jQuery、jsonrpc、および polopoly cms を使用していることを知っていることです。同じ JSON データを投稿できますが、Web サーバーでホストされているページから投稿できますか?

4

1 に答える 1

2

はい。

POSTここのヘッダーは、上部のHTTP動詞を除いて、それほど重要ではありません。

関連するビットはJSON文字列です。これはJSONRPC呼び出しのように見えます。これは、、、およびを含む外部idオブジェクトmethodですparams。これらのパラメーターは配列であり、最後のパラメーターはJSONでシリアル化されたJavaクラスのようです。

これは、jQueryを使用して自分で簡単に使用できます。

$.ajax({
  url: 'yourserver.com/service',
  dataType: 'json',
  data: {
        id:4,
        method:"contentBridge.setComponentValue",
        params:[
            "7.92961", 
            "name", 
            "Welcome", 
            "", 
            {
                "javaClass": "java.util.HashMap", 
                "map": {
                    "en": false, 
                    "es": false, 
                    "de": false, 
                    "fr": false
                }
            }
        ]
    },
  success: function() { /*  */ }
});

このスクリプトがブラウザから実行されている場合(たとえば、ユビキタススクリプトとして)、問題はありませんが、別のサイトのページで実行されている場合は、多くの問題が発生する可能性があります。すべてのブラウザがデフォルトでクロスドメインAJAX呼び出しをブロックしていると思います。

于 2010-03-12T09:07:37.693 に答える