> >> El 2013-09-07 20:12, Roberto De Ioris escribió: >>>> Hello, >>>> >>>> I have configured uWSGI in order to proxy to an http server and, >>>> after >>>> that, transform the response from the http server through the XSLT >>>> transformation plugin. It works. The relevant config is: >>>> >>>> route= ^/ >>>> toxslt:stylesheet=/whatever/template.xslt,content_type=text/html >>>> route= ^/ proxyhttp:127.0.0.1:8002 >>>> >>>> With this I am able to XSLT-transform every response from the >>>> 127.0.0.1:8002 server. >>>> >>>> The problem is that I would like to do this *only* when the response >>>> is >>>> a Content-type=text/html (whatever the URL is, i.e. it cannot be >>>> done by >>>> file extension. It must be by the Content-type header of the >>>> response) >>>> >>>> Is there a way to apply the transformation depending on the response >>>> from the server? >>>> >>>> I also considered using python code to setup the "transformation >>>> chain" >>>> on the fly as the response reaches back to the uWSGI instance, but >>>> it is >>>> poorly documented, I just don't know how to do it. Any idea? >>>> >>>> Thank you. >>>> >>>> Pablo. >>>> >>>> >> >> Thank you for your quick answer. >> >>> There is still no way to check response headers (honestly i still >>> need to >>> find a proper solution). Currently you can only check the HTTP >>> status, >>> using the error-route chain (it is a routing chain run after the >>> response >>> generation but before transformations) >> >> Is it documented? I did not see it. >> >> Anyway, that would be too expensive for this use case. >> >>> This limit is general, so even running custom code in routing handler >>> does >>> not solve the issue. >> >> Not as the most elegant and final solution, but maybe a very simple >> transformation plugin that just checks for a variable or header, and >> interrupts the transformation chain if matched... >> >> Thanks again for your help. >> >> Pablo. >> _______________________________________________ >> uWSGI mailing list >> [email protected] >> http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi >> > > Error router work in the same way as the others, the only difference is in > "when" they run: > > https://github.com/unbit/uwsgi-docs/blob/master/Changelog-1.9.11.rst#error-routes > > > I have just got an idea (sleeping sometime helps ;): > > response-header-collect = Content-Type MY_CONTENT_TYPE > response-header-collect = Server THE_SERVER > > this will place the "tracked" headers in a request var as soon as they are > received > > So you can do something like: > > error-route-if = equal:${MY_CONTENT_TYPE};text/html > toxslt:stylesheet=/whatever/template.xslt,content_type=text/html > > implementing it would be super-easy and there will be no need to add more > features to internal routing syntax > > -- > Roberto De Ioris > http://unbit.it > _______________________________________________ > uWSGI mailing list > [email protected] > http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi >
Just pushed it: https://github.com/unbit/uwsgi-docs/blob/master/InternalRouting.rst#collecting-response-headers -- Roberto De Ioris http://unbit.it _______________________________________________ uWSGI mailing list [email protected] http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi
