繁体   English   中英

Javascript google 音译 API 不通过 h​​ttps 提供

[英]Javascript google transliterate API not served over https

JavaScript google 音译 API 不通过 h​​ttps 提供服务。 我低于混合内容错误。 它在 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">

错误:

混合内容:“ https://extranuclear-freque.000webhostapp.com/lang.html ”上的页面已通过 HTTPS 加载,但请求了不安全的脚本“ 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=回调._2j46jfkrs '。 此请求已被阻止; 内容必须通过 HTTPS 提供。

请帮帮我。 谢谢

 <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>

我找到了一种解决上述错误的解决方案,您只需在上传服务器时将此行粘贴到 Meta 标记下方即可..如果您觉得这有帮助,请告诉我..

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

将此( 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 上一个回答的描述

我对这个问题进行了研究,发现谷歌在translationI.js 中有硬核

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

下面是一个分步过程:


首先,有一个指向 API 的链接:

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

其次,访问上面的API链接并搜索如下内容:

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.jsextra.js

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

第三步: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 步:调用 javascript - main.js之一到您的 html。

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

为所有面临弹出窗口未正确显示问题的人扩展 Min Somai 的回答。

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

工作演示:

 <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].cdkeyup[0].ia.Fp = '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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM