我想使用客户端Javascript来执行从客户端计算机上看到的DNS查找(主机名到IP地址).那可能吗?
我想通过JSONP提供一个web服务,并且想知道,如果我需要清理callback参数中的值.
我当前的服务器端脚本现在看起来像这样(或多或少.代码在PHP中,但可能是真的.):
header("Content-type: application/json; charset=utf-8");
echo $_GET['callback'] . '(' . json_encode($data) . ')';
Run Code Online (Sandbox Code Playgroud)
这是一个典型的XSS漏洞.
如果我需要消毒它,那怎么样?我无法找到有关可能允许的回调字符串的足够信息.我引用维基百科:
虽然填充(前缀)通常是在浏览器的执行上下文中定义的回调函数的名称,但它也可以是变量赋值,if语句或任何其他Javascript语句前缀.
我正在寻找一个跨站点书签,它获取一个突出显示的单词,将其传递给CodeIgniter方法(domain.com/controller/method),并通过字典API返回定义.我有一个骨架在单个域上运行良好,但我希望扩展它以使用JSONP跨域.但我觉得不清楚.
我知道我需要从远程位置加载脚本并将其注入当前上下文中.我相信我需要在页面上显示突出显示的单词,然后调用一个类似于domain.com/controller/method/word的URL 来获取该脚本.然后它变得模糊.
我想我基本上有两个问题:
答:这不是对XMLHTTPRequest的补充,这取代了它,因此完全删除了该步骤.新脚本调用该方法,通过查询字符串传递必要信息,并接收响应中的JSON数组.
word(json_encode($array));?答:是的,我会把它传回去callbackFunctionName(json_encode($array));.
更新
我把上面三个答案中的两个答案包括在内.如果有人能够彻底解释事情,我当然会将他们的答案标记为正确,否则我会在答案中阐述我的绊脚石.我仍然不知道在哪里编写回调函数以及我将在JS中使用它做什么.
非常感谢您提供的任何帮助.