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提供。
请帮帮我。感谢
<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;
答案 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步:将
<script type="text/javascript" src="main.js">
答案 3 :(得分:1)
我找到了一种纠正上述错误的解决方案,您只需在上传服务器时将其粘贴到行Meta标签下面即可。如果您认为有帮助,请告诉我。
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
答案 4 :(得分:0)
将Min Somai的答案扩展到所有遇到弹出式窗口显示不正确的问题的人。
<link type="text/css" href="assets/google/js/transliteration.css" rel="stylesheet"/>
答案 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>