13

访问谷歌驱动器选择器时出现以下错误,但是选择器正确显示而没有任何错误。

Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('https://docs.google.com') does not match the recipient window's origin ('http://localhost').

Invalid 'X-Frame-Options' header encountered when loading 'https://docs.google.com/picker?protocol=gadgets&origin=http%3A%2F%2Flocalho…%3Atrue%7D))&rpctoken=e2x1eop3h1rr&rpcService=2qeo0ns6gu13&thirdParty=true': 'ALLOW-FROM http://localhost' is not a recognized directive. The header will be ignored.

PSB 来自我的开发者控制台的屏幕截图

http://screencloud.net/v/6431

我还提到了这个问题Google Drive Picker - Developer Key is Invalid Error但我认为 google api 发生了一些变化,所以这件事不起作用。

代码片段 -

var picker = new google.picker.PickerBuilder()
                             .setLocale(lkGoogleSettings.locale)
                             .setOAuthToken(accessToken)
                             .setCallback(pickerResponse)
                             .setOrigin(lkGoogleSettings.origin);

谢谢

4

1 回答 1

8

正如一些评论员所提到的,该X-Frame-Option错误是Chrome. 你可以在这里看到关于它的长篇讨论。

现在,对于真正的问题:origin matching. 无论您是否将其添加到您的客户端 ID 权限中的源中,Google 云端硬盘都无法与 localhost 配合使用,无论是否使用端口。

不过,还是有希望的。如果您在主机文件中设置一个域以指向 localhost,然后您可以在您的 Google App 控制台中将该域添加到您的源,并且一切都按预期工作!

我一直这样做是为了测试我的应用程序。例如:

  1. 添加dev.mysite.com到您的( Machostfile中的 /etc/hosts )。
  2. 在 中复制您的选择器应用程序的权限中的域,Google App Console您应该一切顺利。
  3. 使用 * 启动您的站点dev.mysite.com:80,Drive Picker 现在应该可以正常工作了。

*注意:您必须在端口 80 上提供服务。Google 根本不喜欢使用端口,因此当您访问您的站点时,该地址必须dev.mysite.com没有端口。

于 2016-06-08T14:28:43.620 回答