【问题标题】:Bypassing the AJAX Same-Origin Policy - A particular case绕过 AJAX 同源策略 - 一个特例
【发布时间】:2011-05-28 08:24:48
【问题描述】:

当我尝试使用 Ajax/JQuery 动态刷新页面内容时,我了解了 S-O-P 问题和限制,但是我想知道是否有办法解决我的小问题。

为了更容易理解,我先解释一下工作流程。

我确实通过电子邮件接收网页,即 HTML 电子邮件。网页以这种方式包含 HTML 表单,一旦表单完成,它就会被发送到适当的 Web 服务器 (php) 以存储数据。

我主要使用 Outlook 2007 作为我的电子邮件客户端(这里不要说什么,我知道!!!),但是出于一些安全限制,在“打开”电子邮件时禁用了 IFRAMES。我使用 VBA 脚本绕过了这个问题,该脚本复制整个页面内容,将其作为独立网页保存在文件系统上并加载到浏览器 (Firefox) 中。

页面加载到浏览器后,地址栏会显示一个本地/文件系统的URL,比如

file:///C:/Users/Bob/Desktop/outlookpage.htm

到这里没问题,工作正常;现在的问题:

我希望使用 Ajax 动态更新页面内容,使用 jQuery.load,但这就是 SOP 的用武之地。正在加载以动态更新网页的 PHP 页面被视为在另一个域上运行,因此被阻止。

我想知道如何规避这个问题。

【问题讨论】:

  • 我在本地工作时处理过 Chrome 和 IE 中的 SOP。我的建议是,坚持使用 Firefox 和 Safari 来测试你的 AJAX 是否工作,当你离开开发服务器时,它会在 Chrome 和 IE 以及其他浏览器中工作。
  • 我已经在本地使用 Firefox,在本地网络服务器上测试外部脚本。

标签: php ajax same-origin-policy


【解决方案1】:

这是行不通的,因为要绕过同源策略,您需要在同一域上使用代理,然后该代理将与处理不同域上数据的页面进行通信。没有办法在另一个用户的计算机上生成代理脚本(或者至少,不应该有办法)。我要么只是正常发布表单,这将打开用户的默认浏览器,要么在电子邮件中提供指向在线表单的链接。无论如何都应该提供链接,以防他们的电子邮件客户端不支持 HTML 电子邮件。

【讨论】:

  • 布莱恩,我明白你的意思了。顺便说一句,您是否认为此处描述的技术 (mikazo.com/2010/09/how-to-getting-around-ajax-same-origin.html) 根本不起作用?
  • 好吧,你说服了我。可能最好的选择是使用在线表格。通过电子邮件发送的表格包含指向在线版本的链接。完美运行。谢谢
猜你喜欢
  • 2014-03-17
  • 2012-12-30
  • 2010-11-13
  • 2011-02-14
  • 2013-09-06
  • 1970-01-01
  • 2011-06-22
  • 2012-08-22
  • 2011-07-20
相关资源
最近更新 更多