【问题标题】:Disable Same Origin Policy in Mobile Safari在 Mobile Safari 中禁用同源策略
【发布时间】:2012-08-22 10:24:00
【问题描述】:

我有一个 HTML5/JavaScript 应用程序,最初是为在某些汽车上运行而编写的。基本上,我需要将我的应用设置为在浏览器中运行,以便向客户展示一个简单的演示。

我正在使用 jQuery .ajax,由于同源策略而导致问题。我找到了很多在桌面浏览器中禁用此功能的方法,但在移动浏览器中却没有。

我的目标是在 iPad 上的 Mobile Safari 中演示该应用程序。有什么方法可以暂时禁用 iPad 上的同源策略?

【问题讨论】:

  • +1,我也很想回答这个问题。
  • 您是否尝试在服务器上设置标头 Access-Control-Allow-Origin: *?
  • 不幸的是,我无法控制要进行 AJAX 调用的服务器。我的短期解决方案是在托管 html/js 的同一台服务器上托管 php 代理脚本。幸运的是,我需要的服务最终将 CORS 标头添加到它们的响应中,这使我能够取消我的代理脚本。
  • 目前(今天)没有其他合适的解决方案,而不是设置标题“Access-Control-Allow-Origin: *”。您的客户端解决方案不会让您满意。另一种方法是使用 JSONP(=改变你的通信方式)。所有这些解决方案都已发布。

标签: javascript html ipad mobile-safari same-origin-policy


【解决方案1】:

我在使用煎茶应用时遇到了同样的问题。我通过设置我的 javascript ajax 调用的基本路径来解决,例如:

var BASEPATH = 'http://192.168.1.200/myapp';

$.ajax({
  url: BASEPATH+'/someaction'
});

我在手机上使用http://192.168.1.200/myapp访问它

我的问题是我只能通过 IP 访问移动设备,但 ajax 调用指向 localhost。

希望这个技巧有所帮助。

【讨论】:

    【解决方案2】:

    您需要运行 Web 服务器,而不是文件协议。

    【讨论】:

    • 它必须在网络服务器上运行才能从 iPad 访问。问题是我无法控制我调用的服务,它们的响应中不包含 CORS 标头。我想出的解决方案是在与我的 html/js 相同的服务器上托管一个 php 代理脚本。
    【解决方案3】:

    基本上,你需要一个标题。

    将此代码放在您要向其发送跨域请求的页面顶部。

    <?php header("Access-Control-Allow-Origin: *"); ?>
    

    小心使用 *,因为这允许任何网站向发送该标头的页面发送请求。

    * 可以替换为域,例如 example.com、example.net。

    【讨论】:

      【解决方案4】:

      尝试在您的 ajax 调用中使用 JSONP。它将绕过同源策略。

      http://learn.jquery.com/ajax/working-with-jsonp/

      【讨论】:

        【解决方案5】:

        如果您对公共代理使用 ajax 调用,它基本上可以删除相同的源头标头,那么在 Javascript 中是可能的。或者您可以编写一个 php curl 获取页面,在其中调用使用 ajax。有关这方面的代码,请查看此博文:

        http://thewebtimes.tumblr.com/post/90549614884/access-forbidden-webpages-with-javascript

        【讨论】:

          猜你喜欢
          • 2011-06-01
          • 2012-06-08
          • 2015-12-27
          • 2014-07-07
          • 2010-09-25
          • 2013-06-09
          相关资源
          最近更新 更多