访问Google协作平台上的网页以加载我的网站

时间:2014-03-13 08:00:29

标签: javascript jquery cors

通过javascript(jQuery)我试图将Google协作平台中某些网页的内容加载到不同网站的网页中的元素上。使用jQuery的加载我得到了可以预期的结果:

XMLHttpRequest cannot load https://sites.google.com/site/foo/home. No 'Access-Control-
Allow-Origin' header is present on the requested resource. Origin 'http://bar' is 
therefore not allowed access.

我尝试使用CORS,使用下面的代码(我在http://www.html5rocks.com/en/tutorials/cors/找到),但得到了相同的结果。

function createCORSRequest(method, url) {
  var xhr = new XMLHttpRequest();
  if ("withCredentials" in xhr) {
    // XHR for Chrome/Firefox/Opera/Safari.
    xhr.open(method, url, true);
  } else if (typeof XDomainRequest != "undefined") {
    // XDomainRequest for IE.
    xhr = new XDomainRequest();
    xhr.open(method, url);
  } else {
    // CORS not supported.
    xhr = null;
  }
  return xhr;
}

function makeCorsRequest() {
  var url = 'https://sites.google.com/site/edumonkihelp/test0';

  var xhr = createCORSRequest('GET', url);
  if (!xhr) {
    alert('CORS not supported');
    return;
  }

  xhr.onload = function() {return xhr.responseText;};
  xhr.onerror = function() {alert('Woops, there was an error making the request.');};
  xhr.send();
}

所以我想我有两个问题: 1.您可以访问Google协作平台中的网页内容吗? 2.是否还有其他类似的服务可以帮助您这样做?

谢谢!

1 个答案:

答案 0 :(得分:1)

根据Google Sites Data API,您可以使用path参数获取位于http://sites.google.com/site/siteName/path/to/the/page的特定网页:

GET /feeds/content/domainName/siteName?path=/path/to/the/page

要使用jQuery.ajax()执行Ccoss域请求,请指定dataType: 'jsonp'

实施例

该示例演示了如何检索位于https://sites.google.com/site/nokiaofficescontacts/hq的页面:

$.ajax({
    url: 'https://sites.google.com/feeds/content/site/nokiaofficescontacts?path=/hq&alt=json',
    success: function (data) { 
        console.log('Page was succesfully retrieved');
        console.log(data.feed.entry[0].title); //print Page Title
    },
    error: function (error) {
        console.log(JSON.stringify(error));
    },
    dataType: 'jsonp'
});
  

注意:alt=json被指定为以JSON格式请求响应。