Javascript google transliterate API未通过https提供

时间:2017-06-21 05:18:10

标签: javascript api jsapi

JavaScript google transliterate API无法通过https提供服务。我得到混合内容错误。它在http网站上工作,但没有使用https。我试图通过以下所有方式调用API。

 <script type="text/javascript" src="https://google.com/jsapi">
 <script type="text/javascript" src="http://google.com/jsapi">
 <script type="text/javascript" src="//google.com/jsapi">
 <script type="text/javascript" src="//www.google.com/jsapi">

错误:

  

混合内容:&#39; https://extranuclear-freque.000webhostapp.com/lang.html&#39;是通过HTTPS加载的,但请求了一个不安全的脚本&#39; http://www.google.com/inputtools/request?text=gy&ime=transliteration_en_bn&num=5&cp=0&cs=0&ie=utf-8&oe=utf-8&app=jsapi&uv&cb=callbacks._2j46jfkrs&#39;。此请求已被阻止;内容必须通过HTTPS提供。

请帮帮我。感谢

&#13;
&#13;
<pre> 
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <script type="text/javascript" src="https://www.google.com/jsapi">
    </script>
    <script type="text/javascript">
      google.load("elements", "1", {
            packages: "transliteration"
          });
      function onLoad() {
        var options = {
            sourceLanguage:
                google.elements.transliteration.LanguageCode.ENGLISH,
            destinationLanguage:
                [google.elements.transliteration.LanguageCode.BENGALI],
            shortcutKey: 'ctrl+g',
            transliterationEnabled: true
        };
        var control =
            new google.elements.transliteration.TransliterationControl(options);

        control.makeTransliteratable(['transliterateTextarea']);
      }
      google.setOnLoadCallback(onLoad);
    </script>
  </head>
  <body>
    <textarea id="transliterateTextarea" style="width:600px;height:200px"></textarea>
  </body>
</html> 
</pre>
&#13;
&#13;
&#13;

7 个答案:

答案 0 :(得分:4)

在本地保存此https://www.google.com/uds/api/elements/1.0/7ded0ef8ee68924d96a6f6b19df266a8/transliteration.I.js)文件

找到“qi =”http://www.google.com“然后将其更改为qi =”https://www.google.com“

它会起作用

这是@Nitin Goyal的流行答案的描述

答案 1 :(得分:2)

我对这个问题进行了研究,并发现google有硬核进入翻译I.js

要解决此问题,您可以将该文件下载到您的计算机上并上传到您自己的服务器,并将http://google.com更改为https://google.com以解决您的问题

答案 2 :(得分:1)

这是一步一步过程:

首先,有一个API的链接:

<script type="text/javascript" src="https://www.google.com/jsapi">

其次,访问上面的API link并搜索以下内容:

google.loader.ServiceBase = 'https://www.google.com/uds';
  

现在,这是重要的部分!

您需要替换google.loader.ServiceBase = 'yourfile.js';

的链接

注意: yourfile.js 是您创建的脚本。

要做到这一点 - 您需要创建两个单独的JavaScript文件。为什么?因为google.loader.ServiceBase位于google.com/jsapi

这是我做的过程:

第1步:创建两个JavaScript文件 - 让我们说 main.js extra.js

第2步:https://www.google.com/jsapi的内容保存到 main.js

第3步:https://www.google.com/uds/api/elements/1.0/7ded0ef8ee68924d96a6f6b19df266a8/transliteration.I.js的内容保存到 extra.js

第4步: extra.js 中 - 找到qi="http://www.google.com"并替换为qi="https://www.google.com" - 请记住http更改为https并保存。

第5步:现在返回 main.js - 您必须找到the google.loader.ServiceBase = 'https://www.google.com/uds';并替换为google.loader.ServiceBase = 'extra.js';并保存。

第6步: - main.js 一个调用到您的HTML。

<script type="text/javascript" src="main.js">

答案 3 :(得分:1)

  

我找到了一种纠正上述错误的解决方案,您只需在上传服务器时将其粘贴到行Meta标签下面即可。如果您认为有帮助,请告诉我。

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

答案 4 :(得分:0)

将Min Somai的答案扩展到所有遇到弹出式窗口显示不正确的问题的人。

  1. 从此link复制CSS并将其添加到文件 transliteration.css 中。将以下行添加到index.html
<link type="text/css" href="assets/google/js/transliteration.css" rel="stylesheet"/>
  1. 这应该为您提供显示音译弹出窗口所需的正确CSS。

答案 5 :(得分:0)

  var control =
            new google.elements.transliteration.TransliterationControl(options);

        var ids = ["transl1", "transl2"];
        control.makeTransliteratable(ids);


//Add the following line to make it work over https

control.c.qc.t13n.c[3].c.d.keyup[0].ia.F.p = 'https://www.google.com';

答案 6 :(得分:-1)

工作演示:

<html>
  <head>    
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    
    <script type="text/javascript">
      google.load("elements", "1", {
            packages: "transliteration"
          });    
      
      function onLoad() {
        var options = {
            sourceLanguage:
                [google.elements.transliteration.LanguageCode.ENGLISH],
            destinationLanguage:
                [google.elements.transliteration.LanguageCode.HINDI ],
            shortcutKey: 'ctrl+g',
            transliterationEnabled: true
        };

                var control = new google.elements.transliteration.TransliterationControl(options);

        // Enable transliteration in the textbox with id 'transliterateTextarea'.
        control.makeTransliteratable(['transliterateTextarea']);
        //Add the following line to make it work over https
        control.c.qc.t13n.c[3].c.d.keyup[0].ia.F.p = 'https://www.google.com';
 	}
    google.setOnLoadCallback(onLoad);
      
    </script>
  </head>
  <body>
    <textarea id="transliterateTextarea" style="width:600px;height:200px">यहाँ टाइप करे ...</textarea>
    <p>(Press Ctrl+g to toggle between English and Hindi)</p>
  </body>

</html>