【问题标题】:XMLHttpRequest error with Google translate (No 'Access-Control-Allow-Origin' header)Google 翻译的 XMLHttpRequest 错误(没有“Access-Control-Allow-Origin”标头)
【发布时间】:2014-10-04 12:43:57
【问题描述】:

我在尝试访问使用 Google 翻译的页面时遇到此错误:

XMLHttpRequest 无法加载 http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit。 请求中不存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://localhost:8080” 访问。

我已经在 SO 上阅读了 multiple posts 关于这个问题的信息,但我还没有找到一种方法让它与我们初始化 Google 翻译小工具的方式一起工作。

提出的解决方案包括将dataType 设置为jsonp 并将Access-Control-Allow-Origin: * 添加到XMLHttpRequest 的标题中。但是,我没有像其他帖子中那样进行 AJAX 调用,只是使用 Google 提供的脚本初始化 Google Translate 元素:

<script type="text/javascript">
          function googleTranslateElementInit() {
                new google.translate.TranslateElement({pageLanguage: 'en',
                    layout: google.translate.TranslateElement.InlineLayout.SIMPLE,
                    includedLanguages: 'fr,en'
                }, 'hiddenGoogleTranslate');
</script>
<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>

如何定义dataType 或使用此初始化脚本向标题添加内容?我是 Javascript 新手,所以一定有一些我遗漏的东西。

谢谢!

【问题讨论】:

  • 请考虑添加一个不赞成的理由,我知道有很多关于这个问题的帖子,但我没有找到任何使用 googleTranslateElementInit 脚本的帖子。
  • 你能发布一个 jsfiddle 来演示这个问题吗?
  • 我在这里试过 jsfiddle.net/zznv5tet 似乎没有抛出任何错误 - 你可以在这个样本的基础上构建吗?
  • @YuriyGalanter 实际上,它在您的 jsfiddle 中运行良好。当我们从一个页面导航到另一个页面时会出现问题,我不知道如何在 jsfiddle 中复制它..!

标签: javascript jquery json cross-domain google-translate


【解决方案1】:

或者,您可以在服务器上使用 curl 或 file_get_content() (webproxy) 来获取翻译文本。然后您可以使用 ajax 访问该 url。如果您想将“访问控制允许来源”标头定义为 *,您可以在您的服务器上进行(而不是来自 js)。您的网址可以跨域访问。

【讨论】:

    猜你喜欢
    • 2018-09-19
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    相关资源
    最近更新 更多