-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 数据但从我的网络服务器上托管的页面?

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() { /*  */ }
});

如果这个脚本是从浏览器运行的(例如作为一个Ubiquity脚本),你应该没问题,但如果它在不同站点的页面上运行,预计会有很多问题。我认为默认情况下所有浏览器都会阻止跨域 AJAX 调用。

于 2010-03-12T09:07:37.693 回答