如何在别人的网站上构建一个小部件并在你的网站上托管


How does one build a widget on someones website and is hosted on yours?

这个问题是这个问题的参考
因此,经过对JSONP的研究和测试,我得出的结论是,我不知道自己在做什么

我需要什么

我正在制作一个客户服务,供人们在他们的网站上使用。最后,想要将我们的web应用程序嵌入其网站的人需要获得一些带有授权密钥的JavaScript代码。

我有什么

我已经玩了一些代码,这就是我所拥有的:

homepage.php (client side)


<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript">
(function($) {
var key= "12345";
var url = 'http://www.example.com/json.php?callback=?&auth=' + key + '';
$.ajax({
    type: 'GET',
    url: url,
    async: false,
    jsonpCallback: 'jsonCallback',
    contentType: "application/json",
    dataType: 'jsonp',
    success: function(json) {
       document.write(json.csBlock[0].frame); //Call to the iFrame
       // document.write(json.csBlock[0].layout);
       // document.write(json.csBlock[0].core);
    },
    error: function(e) {
       console.log(e.message);
    }
});
})(jQuery);
</script>
</head>
<body>
 </body>
 </html>

所以这个JavaScript请求回调到我的服务器。。。

json.php (server side)


<?php 
if ($_GET['auth'] === "12345"){
?>
jsonCallback(
    {
        "csBlock":
        [
            {
                "frame": "<iframe src='http://www.example.com/content/testpage.php'></iframe>",
                "layout": "<link rel='stylesheet' href='http://www.example.com/css/klantpage.css'>",
                "handle": "<script src='http://www.example.com/js/self/widgetScript.js'></script>",
                "core": "<div class='dashboard_widget'></div><div id='chatContainer' class='chatContainer'><div id='view_ajax' class='view_ajax'></div></div><div id='ajaxForm' class = 'ajaxForm'><textarea id='chatInput'></textarea></div><input type='button' value='Send' id='btnSend' class = 'btn btn-primary'></div></div>"
            }
        ]
    }
);
<?php
}
else {
    ?>
    jsonCallback(
    {
        "csBlock":
        [
            {
                "layout": "<div style='width: 250px; height: 50px; background-color: #842979; position: fixed; bottom: 0; right: 5%; border-top-left-radius: 5px; border-top-right-radius: 5px; text-align: center; line-height: 300%; color: white; font-family: calibri; font-size: 13pt;'>KEY NOT PERMITTED</div>"
            }
        ]
    }
);


    <?php
}
?>

有人发送给我们的密钥应该是"12345"
因此,就这一方面而言,我认为iFrame将是一种糟糕的做法。。。所以我要避免这种情况
现在,正如您在json.php文件中看到的,我已经用div构建了一些东西
问题是,当我使用div(还包括"handle":)构建它时,它会给我一个500内部服务器错误
我认为这是因为widgetScript.js正试图调用另一台服务器上的PHP文件
那么,iFrame已经过时了,并且只使用HTML元素构建它,对于我所知道的内容,我有多少选项?无

问题

如何使用JSONP专业、安全地制作聊天小工具
我担心的是,人们无论如何都可能更改JavaScript并使用聊天小部件。


这个问题可能有点太多了,无法在StackOverflow上回答
所以把我重定向到另一个网站对我来说完全没问题。

任何提示、指南、教程都将不胜感激!

如何使用JSONP专业、安全地制作聊天小部件?我担心的是,人们无论如何都可能更改JavaScript并使用聊天小部件

更好的方法是使用WebSockets,它更快、更安全。

我的观点来了,因为我以前做过专业聊天小工具,无论是针对网络上的外部应用程序还是内部应用程序。(我同时使用了JSONP和WebSockets)

WebSocket小部件将减少目标网站的工作量和负载。它在客户端上需要更少的JavaScript,而且在代码上也更容易维护。

您将确保每个域的访问安全。

这只是我的两分钱,如果你愿意,我们可以进一步讨论。