因为你可以不适用定义的头上他的电话, ,如何使跨领域的要求和适用定义的标题采用jQuery?

我基本上是试图访问docs字,并需要通过一个身份验证标记:

var token = "my-auth-token";
$.ajax({
  url: "http://docs.google.com/feeds/documents/private/full?max-results=1&alt=json",
  dataType: 'json',
  beforeSend: function(xhr) {
    xhr.setRequestHeader("Authorization", "GoogleLogin auth=" + token);
  },
  success: function(data, textStatus, XMLHttpRequest) {
  },
  error: function(XMLHttpRequest, textStatus, errorThrown) {
  }
});

注:我们的目标是到 完全 绕过应用层。它使用简单的红宝石连接到谷歌数据API,但它需要很多资源分析饲料的所有服务器的时间。

有帮助吗?

解决方案

你可以使用谷歌的JavaScript客户的图书馆来查询的文件。虽然它不是有帮手对文件具体地说,它仍然可以使用与大多数Api,包括文档。看看这个 博客 通过谷歌雇员,显示了一个工作实例。

如果你最终在无限循环的授权,看到这个 相关的问题 从Google的群体。基本上,没有得到设定的速度不够快,因此当JavaScript client library检查,它发现什么和重定向到保护身份验证授权页。一个解决办法是添加一个小小的延迟之前检查,或者使用登录按钮启动的授权,而不是做到这一页上的负荷。

你还需要增加任何图像到你的网页,位于同一个领域。它可以隐藏的CSS,只要在DOM中。

使用例如以上博客,我能取回我的文件清单与JavaScript单。这里的修改初始化功能我用来摆脱的无限授权循环:

function initialize() {
    var scope = 'http://docs.google.com/feeds/';

    if (google.accounts.user.checkLogin(scope)) {
        var service = new google.gdata.client.GoogleService('writely', 'DocList-App-v1.0');   
        service.getFeed(scope + 'documents/private/full/', handleFeed, handleError);  
    } else {
        var loginButton = $("<button>Click here to login</button>");
        loginButton.click(function() {
            var token = google.accounts.user.login(scope); // can ignore returned token  
        });
        $("body").append(loginButton);
    }
};  
​

其他提示

考虑在服务器端编写一些代码,该代码播放代理,然后命令它。

只要外部域允许,您就可以通过发送适当的 Access-Control-Allow-Origin 标题。然后只使用 XMLHttpRequest 支持标准跨域XHR API的浏览器中的API和 XDomainRequest 在IE中。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top