【问题标题】:firefox OS app,CORS in Firefox os appFirefox OS 应用程序,Firefox os 应用程序中的 CORS
【发布时间】:2014-08-20 20:49:39
【问题描述】:

我一直在 firefox OS 中开发网络应用程序(非托管应用程序)。 我想使用 XMLHttp 请求访问网站 xml/JSON 数据。但它给出了错误,因为 CORS 不允许访问数据。我知道要在网站中添加“Access-Control-Allow-Origin”标头并启用 CORS 可能会导致安全问题。 但是他们是否有任何替代方法可以通过 XMLHttp 请求访问数据馈送?

【问题讨论】:

    标签: ajax xmlhttprequest cors firefox-os


    【解决方案1】:

    首先将您的清单更改为具有以下字段(type 会被人们遗忘):

    "type": "privileged", 
    "permissions": {
        "systemXHR" : {}
    }
    

    其次,将所有 JavaScript 代码移动到一个 单独的 JS 文件中。因为特权应用程序中不允许有内联标签。

    第三次使用mozSystem构造函数,如raidendev所说:

    var xhr = new XMLHttpRequest({ mozSystem: true });
    

    【讨论】:

      【解决方案2】:

      要从 Firefox OS 应用执行跨域 http 请求,您需要在应用的清单中设置权限 systemXHR

       "permissions": {
           "systemXHR" : {}
       }
      

      并创建XMLHttpRequest 并将属性mozSystem 设置为true

      var xhr = new XMLHttpRequest({ mozSystem: true });
      

      此外,对于 XMLHttpRequest 不适用的任何情况,您都可以使用TCP Socket API

      var socket = navigator.mozTCPSocket.open('localhost', 80);
      
      socket.ondata = function (event) {
        if (typeof event.data === 'string') {
          console.log('Get a string: ' + event.data);
        } else {
          console.log('Get a Uint8Array');
        }
      }
      

      【讨论】:

      • 然后提供一些代码和日志来识别问题:)
      • 我已经这样做了,AJAX 正在处理在服务器端设置“Access-Control-Allow-Origin”的域。我正在使用的网站符合 PCI-DSS,因此我无法更改 Access-Control-Allow-Origin 标头,因为它可以打开通往其他应用程序的大门。只是想知道是否有任何方法可以连接到远程 http 服务器并获取数据,就像我们在 Java 中跳过 CORS 一样。我不介意它是否成为同步请求。
      • 这是具有相同概念的示例代码:-code

        测试

      • 我明白了,你想使用原始套接字,对吧?然后寻找TCPSocket API。
      • 你能举个例子吗?
      猜你喜欢
      • 2013-02-14
      • 2014-03-25
      • 1970-01-01
      • 2012-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-12
      • 1970-01-01
      相关资源
      最近更新 更多