ASPN ActiveState Programmer Network
ActiveState
/ Home / Perl / PHP / Python / Tcl / XSLT /
/ Safari / My ASPN /
Cookbooks | Documentation | Mailing Lists | Modules | News Feeds | Products | User Groups


Recent Messages
List Archives
About the List
List Leaders
Subscription Options

View Subscriptions
Help

View by Topic
ActiveState
.NET Framework
Open Source
Perl
PHP
Python
Tcl
Web Services
XML & XSLT

View by Category
Database
General
SOAP
System Administration
Tools
User Interfaces
Web Programming
XML Programming


MyASPN >> Mail Archive >> perl-mod_perl
perl-mod_perl
Re: Handler Chain (based on request method)
by aw other posts by this author
Oct 28 2009 10:13AM messages near this date
Re: Handler Chain (based on request method) | Re: Handler Chain (based on request method)
Aaron Dalton wrote:
>  I'm using mod_perl and CGI::Application::Dispatch to create a RESTful
>  web application.  In the one resource, GETs should be sent to the
>  default handler, and all other requests to the dispatcher.  I have tried
>  using <Limit> and <LimitExcept>, but they do not appear to be working.
>  The handlers get processed regardless.  Here is the current config:
>  
>      <Location /fs>
>          <LimitExcept GET>
>              Allow from All
>              SetHandler perl-script
>              PerlHandler BackCAD::Dispatch
>          </LimitExcept>
>          <Limit GET>
>              Allow from All
>              SetHandler default-handler
>          </Limit>
>      </Location>
>  
>  Is there some way to make this work?  Do I need to write some sort of
>  pre-dispatcher that checks the request method and returns DECLINED if
>  it's GET?  But if it's *not* GET, how do I then pass control on to the
>  other dispatcher?
>  
Just by curiosity, what happened to the suggestions I gave you on the 
Apache httpd list (apart from the first one, which was to cross-post here) ?

Also, the reason why the above does not work is probably that the 
<Limit...>  sections are not really full containers.  So your SetHandlers 
above probably overwrite one another regardless, and only the last one 
counts.

Another quick/cheap hack maybe :

 >      <Location /fs>
 >              Allow from All
 >              SetHandler perl-script
 >              PerlHandler BackCAD::Dispatch
 >      </Location>

then modify the code of BackCAD::Dispatch to return DECLINED if it's a GET.
Honestly, I've never tried that, and I don't know if then Apache would 
process it with its default handler.  But it's worth a try maybe.
Thread:
Aaron Dalton
Perrin Harkins
aw
aw

Privacy Policy | Email Opt-out | Feedback | Syndication
© ActiveState Software Inc. All rights reserved