【问题标题】:Cross-Origin Resource Sharing for OperaOpera 的跨域资源共享
【发布时间】:2011-07-31 03:34:56
【问题描述】:

有没有人找到关于跨域资源共享的 Opera 解决方法?

我想从我放在 bar.com 上的脚本创建一个跨域 XmlHttpRequest 到我的域 foo.com。

standard 到目前为止还没有被 Opera 实现。

可以在here找到有关如何在其他浏览器上执行此操作的示例和文档

据我测试,您可以在 Firefox、IE、Safari 和 Chrome 上执行此操作。但不是在 Opera 上。

【问题讨论】:

    标签: javascript xmlhttprequest cross-domain opera cors


    【解决方案1】:

    可能的替代方法是使用JSONP 进行跨域请求。

    【讨论】:

      【解决方案2】:

      如果浏览器不支持真正的 CORS,JSONP 是获得基本 CORS 功能的最佳/唯一方法(仅限 GET,因为它在内部使用 <script> 标记)。

      【讨论】:

      • 你也可以做服务器端代理
      • 但这对 Opera 不利,
      • 对于发布请求,您可以使用 ajax+php curl。有很多教程可用,您可以使用“ajax php curl cross domain post”关键字在google中搜索。
      • 这并不是真正的跨域请求,如果例如远程端需要登录 cookie,否则并非所有请求都应来自同一 IP。
      【解决方案3】:

      The latest version of Opera's rendering engine, Presto 2.10, now supports CORS.

      • 为 XMLHttpRequest 启用了跨域资源共享 (CORS)。 (Presto/2.10.232)

      但是桌面版的 Opera 还没有发布这个版本的渲染引擎。到目前为止,似乎只有一个版本的 Opera 支持 CORS,Mobile 12。

      这是 2012 年 2 月 27 日更新到他们的"Web specifications support in Opera products" 页面的摘录:

      Miscellaneous
      
      Item | D11.60 | D11.50 | SDK 3.2 | SDK3.1 | M12 | M11.5 | M11.1 | M11 | Mini6.5
      -----+--------+--------+---------+--------+-----+-------+-------+-----+--------
      CORS | No     | No     | No      | No     | Yes | No    | No    | No  | No
      

      D=desktop SDK=device SDK M=mobile Mini=Mini (-:

      现在该表已再次更新,因为桌面版本 12 终于发布并支持 CORS:

      Item | D12.00 | D11.60 | D11.50 | SDK 3.2 | SDK3.1 | M12 | M11.5 | M11.1 | M11 | Mini6.5
      -----+--------+--------+--------+---------+--------+-----+-------+-------+-----+--------
      CORS | Yes    | No     | No     | Yes     | Yes    | No  | Yes   | No    | No  | No
      

      【讨论】:

        【解决方案4】:

        Opera 尚未实现 CORS。它正在积极开发中,但我们还没有发布日期。

        2012-07-26 更新:截至今天和自 Opera 12 发布以来。Opera 有一个稳定的implementation of CORS。请注意,Opera Mini 尚未实现 CORS。

        【讨论】:

        • 这方面有什么更新吗?我尝试在 opera.com 或任何其他提到 CORS 的文档上查找路线图,但空手而归。
        • @nikc 我们声明我们支持的方式在Web specifications support in Opera 中突出显示。不过要小心,因为例如,截至今天,2.8 在功能旁边会有内部版本号。有些是预先宣布的,因为它们已经在管道中,core integration point 也很重要。如您所见,CORS 尚未完成。
        • 投反对票只是因为此答案已过时且不再正确。
        • @hippietrail 感谢您提醒我:p 我正在为 Opera 工作。