这个问题是这个问题的参考
因此,经过对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,而且在代码上也更容易维护。
您将确保每个域的访问安全。
这只是我的两分钱,如果你愿意,我们可以进一步讨论。