2009-12-01 38 views
1

有一些JavaScript,我需要通过以下工作:JavaScript安全同一台服务器上/交叉脚本

://本地主机

://服务器

:/www.domainnamefortheserver.com

当我从http://servername运行脚本与IFRAME引用域 - 它不加载。

有没有办法让Javascript安全模型识别服务器名称,本地主机和域作为相同的“域”?

感谢

+0

您是否使用绝对URL? – Wookai 2009-12-01 15:36:41

回答

2

如果您在UNIX上运行,你可以编辑/ etc/hosts来给您的服务器假的DNS条目。

例如。

127.0.0.1本地主机www.domainnamefortheserver.com

那么你可以随时连接到它的正确名称,即使它不是活的网站上呢。不要试图直接破坏javascript安全。

这也适用于OSX。我期望Windows的工作方式不同。

+1

在Windows中,它是一样的,你可以添加一个条目到你的主机文件位于 - \ Windows \ system32 \ drivers \ etc \ – brendan 2009-12-01 15:34:35

+0

谢谢。我怀疑在18个月的时间里,当我突然发现我在Windows上需要它时,我会来找那个评论的! – 2009-12-01 17:15:36

+0

此外,关于使用相对路径的下面的评论是很好的,除非你受到一些第三方软件的限制,这些软件将全部域放到任何地方。 – 2009-12-01 17:16:21

2

如果您使用的是服务器端语言生成页面,您可以设置安全域,像这样:

document.domain = $CURRENT_HOSTNAME; 

所以安全域将是用户所请求的域名。这是一个黑暗中的镜头,但我希望它有帮助。

0

你是什么意思

我指的都是域名

如果您在http://servername(使用<script src=''>)的页面上加载脚本,即使它们来自另一个域,它们也可以访问http://servername上的所有内容。

但是,如果您尝试对其他域进行AJAX调用,那么您遇到了问题。您可以使用克里斯托弗解释的技巧,即将域名制作成别名。

1

使用根相对URI:

href="/foo/bar" 

,而不是绝对URI:

href="http://example.com/foo/bar" 

这样的文件将会从相同的主机名来加载。

相关问题