Thanks guys! I read that Mozilla link, and it seems you just need to tell the server to respond that the origin URL is allowed to send requests to the server. I asked Janko how to do that and the following line was enough:
response addHeaderName: 'Access-Control-Allow-Origin' value: ' http://localhost:4000/'. Now Amber can send data to Pharo and receive a valid response. Cheers, 2011/9/23 Richard Durr <[email protected]> > Likely the problem, see: > http://meteatamel.wordpress.com/2011/02/11/access-control-allow-origin/ > and from there on: https://developer.mozilla.org/En/HTTP_Access_Control > > > On Fri, Sep 23, 2011 at 11:40 PM, Richard Durr < > [email protected]> wrote: > >> Maybe the Access-Control-Allow-Origin blocks because of the different >> ports? >> >> On Fri, Sep 23, 2011 at 5:56 PM, Bernat Romagosa < >> [email protected]> wrote: >> >>> Ok, so I've just learnt I should be doing: >>> >>> answerTo: aRequest >>> | response | >>> aRequest postDataKeys do: [:eachKey | Transcript show: (aRequest >>> postDataAt: eachKey) value]. >>> response := HTTPResponse ok. >>> ^response >>> >>> But then the client's javascript console shows: "XMLHttpRequest cannot >>> load http://localhost:4001/amber/. Origin >>> http://localhost:4000<http://localhost/>is not allowed by >>> Access-Control-Allow-Origin. >>> " >>> >>> Ideas? >>> >>> 2011/9/23 Bernat Romagosa <[email protected]> >>> >>>> Hi lists, >>>> >>>> I'm trying to get Amber and Pharo to talk to each other by using Ajax. >>>> So far, using an Ajax wrapper that Laurent wrote, I managed to get Pharo to >>>> receive a message from Amber by doing: >>>> >>>> |ajax| >>>> ajax := (Ajax url: 'http://localhost:4001/amber/'). >>>> ajax options >>>> at: 'type' put: 'POST'; >>>> at: 'data' put: 'Hi Pharo!'; >>>> at: 'timeout' put: 500. >>>> ajax onSuccessDo: [console log: 'ok!']; >>>> onErrorDo: [console log: 'not so ok...']. >>>> ajax send >>>> >>>> This is captured by a Swazoo resource, that does the following: >>>> >>>> answerTo: aRequest >>>> | response | >>>> [aRequest postData stream anyDataReady] >>>> whileTrue: >>>> [Transcript show: aRequest postData stream next]. >>>> >>>> response := HTTPResponse ok. >>>> response >>>> contentType: 'text/plain'; >>>> entity: 'Done!'. >>>> ^response >>>> >>>> My intention here is just to read the message data and return an OK >>>> response, but for some reason stream anyDataReady keeps evaluating to true >>>> even when there's no more data to read, so the code underneath is never >>>> executed. The Transcript shows 'Hi Pharo!' though, so I'm sure the request >>>> is being received and read. >>>> >>>> Any light shed on this would be of great help... >>>> >>>> Thanks! >>>> >>>> -- >>>> Bernat Romagosa. >>>> >>> >>> >>> >>> -- >>> Bernat Romagosa. >>> >> >> > -- Bernat Romagosa.
