我安装了 tawk.to 的免费实时聊天。问题(除了他们没有对此脚本的客户支持之外)是 - 当它连接到 tawk.to 服务器时,它会产生“400 Bad Request”错误。我将以下代码添加到 .htaccess 以允许不同的来源,但它们不起作用 - 400 错误仍然出现。我不知道还应该做什么。
我在 .htaccess 中尝试了这些但没有成功:
SetEnvIf Origin "^(.*\.tawk\.to)$" ORIGIN_SUB_DOMAIN=$1
Header set Access-Control-Allow-Origin "%{ORIGIN_SUB_DOMAIN}e" env=ORIGIN_SUB_DOMAIN
Access-Control-Allow-Origin: *.tawk.to
响应标头(假设我将此脚本放在 Examples.com 上):
Accepttext/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Encodinggzip, deflate, brAccept-Languageen-US,en;q=0.5Cache-Controlno-cacheConnectionkeep-alive, UpgradeCookie__tawkuuid=e::tawk.to::CZ4miEdTw+LJy27l6cezd/vgJ1Go/uVCmU/4mrr+WIe5uNur3LjRp6TAhWSTCS83::2; __cfduid=d8cf244362c2ead0f846b52cd84058bd31488522157DNT1
Host vs51.tawk.to
Origin https://EXAMPLE.com
Pragmano-cacheSec-WebSocket-Extensionspermessage-deflateSec-WebSocket-KeyBPkRsxjD+iWVmfb3LV8zpA==Sec-WebSocket-Version13UpgradewebsocketUser-AgentMozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0
错误响应:
GET https://vs51.tawk.to/s/ [HTTP/1.1 400 Bad Request 162ms]
这是来自 tawk.to 的 Javascript 示例(注意它包含 'crossorigin"* 属性,但它仍然会产生错误):
<!--Start of Tawkto (example)-->
<script>
var Tawk_API=Tawk_API||{}, Tawk_LoadStart=new Date();
(function(){
var s1=document.createElement("script"),s0=document.getElementsByTagName("script")[0];
s1.async=true;
s1.src='https://embed.tawk.to/0111111111/default';
s1.charset='UTF-8';
s1.setAttribute('crossorigin','*');
s0.parentNode.insertBefore(s1,s0);
})();
</script>
<!--End of Tawkto-->
更新 - 联系 [email protected] 无效(无回复)。但我做了更多研究 - 我发现一些使用 tawk.to 聊天的网站,并且 400 Bad Request 错误也出现在这些网站上..所以它一定是 tawk.to 脚本固有的/有缺陷的东西,目前尚未解决,并且他们的所有客户都受到影响。
有同样的问题,但我已经解决了。 您需要考虑以下事项:
这是一个工作示例代码:(请注意,这不是可运行的代码,您需要添加自己的变量才能使其工作,但我现在可以让我的用户登录)
var Tawk_API = {
onLoad: function () {
window.Tawk_API.login({
hash: '{{Put your Hash here}}',
name: '{{ User Name}}',
email: '{{ User Email }}',
userId: '{{ User ID }}'
}, function (error) {
//do something if there's an error
});
}
};
var Tawk_LoadStart = new Date();
(function () {
var s1 = document.createElement("script"), s0 = document.getElementsByTagName("script")[0];
s1.async = true;
s1.src = '{{ Put your Chat Link here }}';
s1.charset = 'UTF-8';
s1.setAttribute('crossorigin', '*');
s0.parentNode.insertBefore(s1, s0);
})();