我正在通过 iframe 将应用程序嵌入到某人的网站中,并且需要能够调用他们的一些 javascript 函数。显然,运行 top.cart.add() 会被同源策略阻止。在让他们为我们设置某些东西方面,我们已经用尽了大多数选择,所以我们需要尝试解决它们。有人提到让他们设置 CNAME 记录可以让我们执行跨域 javascript。这可能吗?如果可以,那该如何工作。如果不行,您建议我如何处理这个问题?
答案1
是的,cname 可以工作。原因很简单,浏览器/java 将使用 host 指令,该指令是从地址栏中输入的 hostame 获得的,或者在提取其他对象时在网页代码中指定的。
cname 的工作方式是,它响应对 host1.domain1.com 的请求,并使用另一个 dns 名称(例如 host2.otherdomain.com)进行响应,该名称由解析器查询。这一切都由解析器完成,与应用程序/浏览器的运行无关,因此它是“透明的”(目前没有更好的描述词)。
如果网页位于 www.foo.com,但您的应用来自 www.bar.com,您可以要求他们为 bar.foo.com 或类似的东西创建一个 cname,指向 www.bar.com。您唯一需要做的另一件事就是在您的网络服务器上创建一个 vhost,用于监听 foo.bar.com 和 www.bar.com - 如果您正在使用 vhosts。