【问题标题】:remote call javascript function from another site从另一个站点远程调用javascript函数
【发布时间】:2016-03-21 18:56:49
【问题描述】:

我在另一台主机上有一个上传脚本,在使用Ajax 远程上传文件后,我调用了这样的函数:

echo '<script language="javascript" type="text/javascript">window.top.window.stopUpload('.$result.' , \'res2\' , uploaded , dkey);</script>';

主页中的stopUpload 函数应该运行并做一些事情(显示图片和...) 但我得到 Permission denied 错误

Error: Permission denied to access property "stopUpload"

提示: 想象一下,我在 pageA 中有 stopUpload 函数,我使用 ajax 调用发送文件以上传到我的另一个名为 pageB 的主机页面我在 pageB 中有一个 stopUpload 函数上传完成后应该在pageA上运行但遇到上述错误...

我可以远程调用另一个页面的javascript函数吗?

谢谢。

【问题讨论】:

  • 听起来像“跨站脚本”Google it!
  • @John Hartsock 这像 XSS 吗?
  • 改写....我不知道你在问什么?
  • @JohnHartsock 好吧,我认为这很清楚,但请参阅我的编辑

标签: javascript php ajax function remote-access


【解决方案1】:

你可能违反了Same Origin Policy

只有当Iframe 都属于同一来源时,它们才能访问父窗口内容。 原点由Protocol (http/https)domain name(example.comport(default 80) 组成。如果其中任何一个不同,则认为站点来自不同的来源。如果您能够修改两个站点的内容,那么您可以手动设置document.domain=domain.com。之后您将不会收到错误消息。

#编辑

两个站点至少应该有共同的超级域,以便手动域设置起作用。

例如,facebook.com and google.com can never be compatible,因为它们的超级域不同。

但是docs.google.com and developer.google.com can be compatible 因为他们有super domain google.com 的共同点。

他们都必须在脚本标签中声明document.domain=google.com

【讨论】:

  • 谢谢,我应该在这个主机页面中添加 document.domain 哪个 stopUpload 函数存在?
  • 欢迎,它应该被添加到两个站点。
  • 对不起,但是在 pageA 我应该添加 pageB 域,在 pageB 应该添加 pageA 域,是吗?
  • NS_ERROR_DOM_BAD_DOCUMENT_DOMAIN: Illegal document.domain value添加后出现此错误
  • 你设置了什么值?
猜你喜欢
  • 2021-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-31
  • 1970-01-01
  • 1970-01-01
  • 2019-01-16
  • 1970-01-01
相关资源
最近更新 更多