获取Channel API客户端脚本时出现CORS相关错误

时间:2013-09-17 13:35:14

标签: google-app-engine go dart polymer dart-polymer

我目前正在http://xclamm.appspot.com/尝试使用Google App Engine / Go + Polymer.dart网站。

问题是当我使用Dartium(31.0.1612.0 Developer Build 219647)访问http://xclamm.appspot.com/时出现以下错误。

XMLHttpRequest cannot load https://talkgadget.google.com/talkgadget/channel.js. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://xclamm.appspot.com' is therefore not allowed access. 

我做了一些研究,发现问题与我引用/_ah/channel/jsapi的方式有关,但我找不到如何修复它。我尝试了以下方法来引用channel.js,但我仍然得到同样的错误。

<!-- Following doesn't work -->
<script type="text/javascript" src="/_ah/channel/jsapi"></script>
<!-- Following doesn't work either -->
<script type="text/javascript" src="https://talkgadget.google.com/talkgadget/channel.js"></script>

如果我在dev_appserver.py上运行该网站,它似乎工作正常。我错过了什么吗?

源代码位于https://github.com/rillomas/xclamm-gae,我正在使用Google App Engine SDK 1.8.4 for Go(x64 Windows)。

1 个答案:

答案 0 :(得分:1)

我将<script type="text/javascript" src="/_ah/channel/jsapi"></script>标记从main-stage.html(内部网络组件的html)移动到index.html(网站的根html),并且CORS错误消失了。

<script>标记最初放在<polymer-element>标记内,并且(可能)由Polymer.dart转换为XMLHttpRequest,导致错误。