尝试将数据发布到LOCAL应用程序时,当Origin’null’时,Access-Control-Allow-Origin标头

我正在开发一个程序,它将通过浏览器帮助您与比特币钱包进行交互。

通过在其.conf文件中使用以下命令将比特币客户端设置为服务器…

server=1 rpcuser=test rpcpassword=test rpcallowip=127.0.0.1 

它将允许它作为服务器运行,从而允许您在其上发布JSON命令。 我已经使用下面的代码了解它。

  $.ajax({ url: 'http://test:test@127.0.0.1:29661', type: 'POST', contenType: 'application/json', cache:false, dataType:"json", data: '{"jsonrpc": "1.0", "id":"curltest", "method": "getinfo", "params": [] }', timeout: 15000, }) .done(function(msg){ alert(msg); }); 

但是,只有在我禁用安全function的情况下渲染Google Chrome时,它才有效,从而消除了用户无法接受的CORS安全限制。

由于这是尝试将本地文件系统连接到比特币服务器以及我在本地文件系统上运行IS的文件,为什么我会收到CORS错误,因为它们应该在同一个域上? 我该如何解决这个问题?

我必须通过file:///访问本地文件进行测试 (根据我的理解,’可能’有限的CORS支持)。 这也是用户使用它的方式。

::方法已经尝试::

jsonp – 这无法工作,因为它只能执行GET请求,我需要执行POST请求。 这可以通过在DOM上创建脚本标记并获取数据来实现,并且需要回调函数来从中获取数据。 有点黑客,但遗憾的是这不起作用,因为我需要POST数据。

easyXDM – 试过这个,但失败了,因为它不支持file:/// protocol 🙁 :(否则本来就是我需要的。

WebSockets – 要求服务器执行此操作,我无法更改比特币源。

服务文件中的访问控制允许来源 – 如果文件来自服务器,但它只是在本地系统文件上,这将起作用:///,这是因为它将访问来自比特币客户端的数据并以图形方式显示信息。

好的,我解决了这个问题。 我不得不编辑bitcoinrpc文件,它自己处理CORS。

http://www.html5rocks.com/en/tutorials/cors/

上面的链接给了我很多关于如何做到这一点的有用信息,特别是它必须分两个阶段完成。

有预检请求和预检响应,然后是实际请求和实际响应。

所以我编辑了bitcoinrpc.cpp文件来处理这个问题。 如果有人想知道我是如何实现它的,我将链接到github源代码。

Interesting Posts