LinkedIn如何知道或跟踪我嵌入其窗口小部件的位置?

时间:2011-12-23 11:23:14

标签: javascript html api widget linkedin

当您尝试与LinkedIn的Apply Now按钮集成时,首先需要注册API密钥。表单要求您输入Javascript域API,即Fully-qualified domain name of all pages that will call the JavaScript API with this key.作为回报,它会为您生成一个API密钥和一些HTML代码,您可以将其复制并粘贴到您的网页上并开始使用。

这是他们的向导生成的代码:

<script src="http://platform.linkedin.com/in.js" type="text/javascript">

  api_key: 7a4ghb12agvda4552da

</script>

<script type="IN/Apply" 

data-companyname="Asd"
data-jobtitle="Software Developer"
data-joblocation="Istanbul"
data-email="abc@xyz.com">

</script>

现在,如何跟踪此脚本的嵌入位置?我首先输入http://example.com作为我的Javascript域API。原来我只能在example.com域上使用这个小部件。

in.js里面有哪些内容告诉LinkedIn它的嵌入位置?

我问的原因是因为我自己也在构建一个小部件,我想确保只有已注册的域可以使用我的小部件。

编辑作为奖励,如果我下载in.js,删除域检查部分并在我的页面中包含我自己的in.js版本该怎么办?他们如何防止这种情况?

A LinkedIn employee mentions that both client-side and server-side checks are done.但那会是什么样的检查?我正在寻找对这个问题的深入见解。我怎样才能制作这样的小部件?在客户端,如何检查托管.js文件的当前页面?你如何获得托管js文件的域名? 任何帮助赞赏。感谢。

2 个答案:

答案 0 :(得分:3)

如果您制作in.js的本地副本,则LinkedIn Javascript框架将无效 - 后端服务器(在。的调用中)检查以确保in.js也来自正确的服务器检查以确保框架仅适用于指定的域。

这个问题在这里被问到/回答: https://developer.linkedin.com/forum/security-prevent-impersonations

答案 1 :(得分:2)

in.js有一个脚本,可以在DOM中添加另一个脚本标记。它传递API密钥(可能作为脚本URL中的GET参数),然后服务器检查HTTP referer(这是一个标准的HTTP头浏览器发送,指示发送它们的网站获取该页面)并检查它是否与数据库中的API密钥。

更简单的版本将包含以下内容:

document.write('<script src="http://mysite.com/api.js?key="' + api_key + '></' + 'script>');

然后在服务器上,像这样的伪代码:

var expectedDomain = queryTable('apikeys').equal('key', GET('key')).field('domain').run();
if (expectedDomain === parseDomain(http.referer)) {
    respond(myscript);
}