Javascript内容储物柜如何重定向?

时间:2012-12-03 21:21:06

标签: php javascript jquery ajax

我为我的网站成员构建了一个内容储存器小部件。内容储物柜会强制访问者在重定向之前完成调查。

基本上,我需要让Javascript向我的域发出Ajax请求,并在调查完成后重定向用户。让我们说一个PHP脚本将回显'1'表示完整,'0'表示不完整。

这通常是微不足道的,但是用户将javascript代码放在他们的网站上,而不是我的网站。所以我担心遇到Cross-Scripting标志。

内容储物柜如何做到这一点?我知道这是可能的,因为像Adscend Media这样的公司有一个。

此外,在我的网站上设计他们的小部件之后,他们在他们的网站上放了一个类似的代码:

<script type="text/javascript" src="http://mywebsite.com/js/w.php?i=6PS0D9"></script>

这是头标记。包含此脚本是否会以某种方式使Cross-Scripting可用于我的域,因为脚本本身位于我的域中?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您关注的基本问题是“同源策略”,这是所有主要浏览器遵循的策略,以防止网站向其他域发出AJAX请求。

但是,同源策略限制<script>标记引入的脚本,这就是为什么内容锁定器能够无问题地提供他们想要的任何脚本文件的原因。顺便提一下,这也是同源策略的“JSONP”解决方法的工作原理。

如果您希望允许客户向您的网站发出跨域请求,您可以将其域名添加到您网站上的特殊“crossdomain.xml”文件中,并且(当前)浏览器将允许这些请求工作(我忘记了文件的名称/路径,但是如果你感兴趣的话应该很容易查找在这里查看更多信息:https://support.ookla.com/entries/21097566-what-is-crossdomain-xml-and-why-do-i-need-it)。

或者,您的客户可以在您的服务器上设置代理服务器(可能不是他们想要做的事情)。或者,您可以使用JSONP,它基本上位于:

  1. 您的用户运行JS,向页面添加脚本标记;该脚本标记的网址类似于'yoursite.com/shouldILetThisGuyIn /'。
  2. 您的服务器将它们发送回一个类似var letThisGuyIn = true; function foo() { return letThisGuyIn }
  3. 的JS文件
  4. 您的用户运行'foo()'并获取结果,确定是否允许该人进入。