0

假设我拥有 2 个网站,A 和 B。我可以访问网站 A 的源代码,但不能访问网站 B,尽管它是由我工作的同一组织开发的,但由不同的部门开发,不会共享源代码与我们。

当用户从网站 A 浏览到网站 B 时,我想在网站 B 中插入一些 HTML,链接回网站 A。类似于 facebook、twitter 等提供的插件。

我知道我可以通过两种方式做到这一点:

第一种方式:使用 javascript 我要求 B 网站上的开发人员包含 a<div id = "fromWebsiteA" />和我的 javascript 代码<script src = "websiteA.com/script.js" />标记。在我的 javascript 代码中,我访问网站 B 上托管页面的 DOM,并在我的 div“fromWebsiteA”中创建子元素。这是大多数社交网络网站为希望在其网站上放置Pin It (Pinterest) 或Digg it或任何按钮的网站发布者提供的内容。

第二种方式:使用 iFrame ,我给他们一个 iframe,我的内容将在其中加载。像facebook的like插件。

我的问题是:

1)我的想法是否正确?

2)有第三种技术吗?

3) 抱歉,如果我对最后一个问题听起来很愚蠢,因为我知道它涉及安全威胁,但是有没有办法让我将该 HTML 插入站点 B 而不涉及站点 B 的开发团队?

4

2 回答 2

1

我认为正确的方法是让网站 B 开发人员编写一个代码来检查http_referer标题中的内容,然后相应地显示您的小部件(或您所称的任何内容)而且存储 cookie 也很聪明,这样他们就可以继续显示用户浏览网站时的小部件。

另一种方法可以包含GET变量之类?from=websiteA的东西,而不是检查http_referer

于 2012-11-28T10:26:39.360 回答
-2

首先,您必须知道您来自网站 A。当您从网站 A 浏览到网站 B 时,您必须使用参数 ( <a href="wwww.example.com?from=websiteA>Go</a>) 调整链接或使用表单来实现相同的效果。

要在网站 B 上检测/读取它是否来自网站 A,您需要插入您的自定义 JS。在这里你应该阅读哈希

var recognizeText = "from=websiteA";
if( location.hash.indexOf( recognizeText ) == -1 ) { return; /*didnt come from websiteA */ }

// We came from website A, I dont know if you want to reset the hash (should the link be visible if you browse through websiteB, all the time..? )
// Then it would be more convenient to add a hash because that you can replace without pagerefreshing (I noticed that setting location.search = "" does refresh)

$("fromWebsiteA").style.display = "block";
$("fromWebsiteA").innerHTML = "<a href='www.websiteA.com'>Go back</a>"

我不会尝试使用 iFrame。我不确定您是否可以从 iframe 中检测到上一页。

于 2012-11-28T10:25:56.433 回答