Hi Edward,

I guess from your message that you would like to accomplish the following:

- use flash to access data from a CouchDB.

This requires for the CouchDB to serve a file called 'crossdomain.xml' which 
your flash application will load first
to verify it's allowed to do so. Flash requires that this file is located at 
the root of your HTTP server ( e.g. http://flash.example.org/crossdomain.xml).

This can be accomplished using the virtualhost + url rewrite options CouchDB 
offers. This has been described earlier by Nicolas (Orr) for blitz.io (neat 
app!):

He describes it as follows (I tried it, and it works beautifully):

<quote>

edit your domain.com<http://domain.com/> zone and add an A record for 
blitz.domain.com<http://blitz.domain.com/>
edit local.ini add a vhost
===
[vhosts]
blitz.domain.com:port = /blitz/_design/blitz/_rewrite
===
restart couchdb
create a blitz database
create a new document
===
{
  "_id": "_design/blitz",
  "rewrites": [
      {
          "from": "/mu-blitz-url",
          "to": "blitz.txt",
          "method": "GET",
          "query": {
          }
      }
  ]
}
===
save the document
create a blitz.txt file and put the content blitz told you put in it
upload blitz.txt as an attachment to the design document
goto blitz.domain.com:port/mu-blitz-url
you should get the content of the blitz.txt attachment

happy days :)

ok so now to test couchdb, i did want to hit the root of couchdb where it
reports the version however if you put "../../../" in the to of the rewrite
couchdb complains too many .. as a security issue, fair enough. so did 2x ..
and thus my design doc looks like this now
===
{
  "_id": "_design/blitz",
  "_rev": "7-0b8cf881f0dc8d26198703eb86e93eb1",
  "rewrites": [
      {
          "from": "/mu-blitz-url",
          "to": "blitz.txt",
          "method": "GET",
          "query": {
          }
      },
      {
          "from": "/",
          "to": "../../",
          "method": "GET",
          "query": {
          }
      }
  ]
}
===

<unquote>

Instead of blitz, of course, you need to figure out a hostname for the CouchDB 
database you would like to access (e.g. 
flash.example.org<http://flash.example.org>)
make sure this hostname actually resolves to the machine you want to access 
(i.e. that runs your CouchDB)

Then edit the virtual host part in your couchdb to reflect your choice (e.g.)
===
[vhosts]
flash.example.org:5984 = /flash/_design/flash/_rewrite
===
restart couchdb afterwards (i don't think this is even necessary if you add 
this entry through Futon)


Use CouchApp (or any other way you like) to create a design document called 
_design/flash that contains the crossdomain.xml file as attachment and a rewrite
statements much like mentioned above:

  "rewrites": [
      {
          "from": "/crossdomain.xml",
          "to": "crossdomain.xml",
          "method": "GET",
          "query": {
          }
      },
      {
          "from": "/:path",
          "to": "../../:path",
          "method": "GET",
          "query": {
          }
      }
]


curl 'http://flash.example.org/crossdomain.xml' should now provide you with the 
crossdomain.xml you added as attachment.

The second rewrite points to the root of the database in question, allowing you 
to get documents in the database:

http://yourserver:5984/flash/doc1 is now accessible through: 
http://flash.example.org:5984/doc1

This setup should allow your flash application to connect to the CouchDB 
without any problems.

Hope this helps,

Dennis

On 18 mrt 2011, at 23:03, edward de jong wrote:

I have the same problem; I am trying to access couch from the same machine as
myself, and actionscript (flash) is balking because it can't get the
crossdomain.xml file from root on that socket. I have tried copying
crossdomain.xml all over the place but no go. clearly it has to be inside couch,
but I have no idea how to stuff a crossdomain.xml file into couch; it isn't a
database, but just a text file that couch is being expected to spit up when
requested.... any help would be appreciate, every single person using
actionscript + couch will have the same problem!



Reply via email to