Brian,

Thanks for the comment.

We thought that the OPTIONS command set the permissions up for the rest of
the POST command, thats why there's a two-step process. It may well be that
the version we had running under node.js did all of this under the covers.

We'll plug that in and have a try.

Thanks for taking the time to reply.

Rob

On Wed, Apr 29, 2015 at 1:08 PM, Brian Duggan <[email protected]> wrote:

> Hi Rob,
>
> You'll want to send the CORS headers with requests other than OPTIONS,
> e.g.  a minimal example to enable it everywhere might be :
>
>     app->hook(after_dispatch => sub {
>         my $c = shift;
>         $c->res->headers->header('Access-Control-Allow-Origin' => '*');
>     }
>
> Brian
>
> On Wednesday, April 29, John wrote:
> > I have not ready your entire post so don't know if this will apply in
> your
> > case: Mojolicious::Plugin::CORS
> >
> > John
> >
> > On 04/29/2015 06:44 AM, Rob Willett wrote:
> > >Hi,
> > >
> > >First time poster.
> > >
> > >We've written an app using jquery, Cordova and were trying too work out
> a
> > >simple REST server framework to use. Since we had a lot of code already
> > >written in JavaScript and using SQLite we thought we'd try express.js
> and
> > >the sqlite modules there. Whilst simple interactions seem to work, the
> > >asynchronous nature and the complete lack of sensible support for SQL
> > >transactions, we abandoned that and went back to our other option
> > >Mojolicious.
> > >
> > >I've been reading a lot about Mojlicious and have struggled to find the
> > >answer to what I think should be a simple problem. We simply want to
> allow
> > >anybody to access the Mojlicious web app. Our app will be on our own
> > >intranet and we don't want anything in the way.
> > >
> > >We thought this would be simple but we seem to be struggling with this
> and
> > >after reading vast quantities of blogs, cpan sections we still cannot
> get
> > >a simple browser running Firefox to make a simple POST request to a
> > >Mojlicious server. We are embarrassed but after two days enough is
> enough,
> > >we're asking for help.
> > >
> > >This is the smallest server code we could write.
> > >
> > >|
> > >#!/usr/bin/perl -w
> > >
> > >use Mojolicious::Lite;
> > >
> > >options '*' => sub {
> > >  my $self = shift;
> > >
> > >$self->res->headers->header('Access-Control-Allow-Origin' => '*');
> > >$self->res->headers->header('Access-Control-Allow-Credentials' =>
> 'true');
> > >$self->res->headers->header('Access-Control-Allow-Methods' => 'GET,
> > >OPTIONS, POST, DELETE, PUT');
> > >$self->res->headers->header('Access-Control-Allow-Headers' =>
> > >'Content-Type');
> > >$self->res->headers->header('Access-Control-Max-Age' => '1728000');
> > >
> > >  $self->respond_to(any => { data => '', status => 200 });
> > >};
> > >
> > >get '/data' => sub {
> > >    my $self = shift;
> > >
> > >    print "GET found\n";
> > >    $self->render(text => 'ok');
> > >};
> > >
> > >post '/data' => sub {
> > >    my $self = shift;
> > >
> > >    print "\nPOST found\n";
> > >    $self->render(text => 'POST ok');
> > >};
> > >
> > >app->secrets(['My very secret passphrase.']);
> > >
> > >app->start;
> > >|
> > >
> > >The code to call it from our app is
> > >
> > >|
> > >$http({
> > >                    url: "http://localhost:3000/data"; ,
> > >                    method: 'POST' ,
> > >                    headers: { 'Content-Type': 'application/json' } ,
> > >                    data: { payload : payload }
> > >}).then(function(response) {
> > >                    // Success
> > >ConsoleLog("$http POST success");
> > >       } ,
> > >function(response) {
> > >ConsoleLog("$http POST failure");
> > >});
> > >|
> > >
> > >We know this angular code works calling express.js running on node.js we
> > >we had it running, we extracted the JSON data from it and updated
> > >databases.
> > >
> > >If we access this from curl, it works fine.
> > >
> > >|
> > >curl --data "id=123" http://localhost:3000/data
> > >|
> > >
> > >We get 'POST OK' returned.
> > >
> > >If we access this from a Firefox browser, which we use as a development
> > >testing mule, we get
> > >
> > >|
> > >Cross-Origin Request Blocked: The Same Origin Policy disallows reading
> the
> > >remote resource at http://localhost:3000/data. This can be fixed by
> moving
> > >the resource to the same domain or enabling CORS.
> > >|
> > >
> > >We can see the OPTIONS method being called from the Network debugger
> under
> > >Firefox and it returns 200 which is OK. This is followed by a POST
> method
> > >and that looks OK as it returns 200. If we examine the headers it all
> > >'looks ok' but clearly isn't. We can see that the debugging from the
> > >Mojlicious server prints out "Post found" which is what we would expect.
> > >
> > ><
> https://lh3.googleusercontent.com/-M5gnpxpeQzI/VUDDNTSXHnI/AAAAAAAAAHE/hgu5HgdWP9Q/s1600/Screen%2BShot%2B2015-04-29%2Bat%2B12.16.00.png
> >
> > >
> > >We're sure this is something simple, but after a very long night and far
> > >too much coffee we've no idea what the problem is.
> > >
> > >Any suggestions welcomed (including pack it all in and take up fishing).
> > >
> > >Thanks
> > >
> > >Rob
> > >
> > >
> > >--
> > >You received this message because you are subscribed to the Google
> Groups
> > >"Mojolicious" group.
> > >To unsubscribe from this group and stop receiving emails from it, send
> an
> > >email to [email protected]
> > ><mailto:[email protected]>.
> > >To post to this group, send email to [email protected]
> > ><mailto:[email protected]>.
> > >Visit this group at http://groups.google.com/group/mojolicious.
> > >For more options, visit https://groups.google.com/d/optout.
> >
> > --
> > You received this message because you are subscribed to the Google
> Groups "Mojolicious" group.
> > To unsubscribe from this group and stop receiving emails from it, send
> an email to [email protected].
> > To post to this group, send email to [email protected].
> > Visit this group at http://groups.google.com/group/mojolicious.
> > For more options, visit https://groups.google.com/d/optout.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Mojolicious" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/mojolicious.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Mojolicious" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.

Reply via email to