Ajax call is not interpreted as an ajax call

Discussion in 'Ruby/Rails' started by thbar, Feb 26, 2007.

  1. thbar

    thbar Active Member


    I'm having an issue which only appears with LSWS. I have a rails 1.2 app on LSWS 2.2.2 with LSAPI (which also hosts another rails app). Everything works perfectly fine, except Ajax calls : they all render non-ajax versions of the pages. I have the feeling that the application does not receive one of the headers (maybe X-Requested-With).

    Here are the typical headers sent by the client on these requests:

    Request Headers
    Host myapp.mydomain.fr
    User-Agent Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv: Gecko/20070219 Firefox/
    Accept text/javascript, text/html, application/xml, text/xml, */*
    Accept-Language en-us,en;q=0.5
    Accept-Encoding gzip,deflate
    Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Keep-Alive 300
    Connection keep-alive
    X-Requested-With XMLHttpRequest
    X-Prototype-Version 1.5.0
    Content-Type application/x-www-form-urlencoded; charset=UTF-8
    Content-Length 0
    Cookie ....
    Pragma no-cache
    Cache-Control no-cache

    Did anyone meet this issue ?

    Is there something to configure at LSWS level with regards to the headers ?

    best regards

  2. mistwang

    mistwang LiteSpeed Staff

    Our rails easy configuration uses 404 handler to forward requests to backend Rails application, if there are both AJAX and non-AJAX version of pages for the same URL, the static version of the page will be served for sure.

    To workaround this, you can use a vhost level rewrite rule to detect AJAX call by testing existence of "X-Requested-With" header.
    Something like,

    RewriteCond %{HTTP:X-Requested-With} !^$ 
    RewriteRule  ^/  /dispatch.lsapi   [L]
    Last edited: Feb 26, 2007
  3. thbar

    thbar Active Member

    I've decided to try an upgrade and it worked! (without the rewriting work-around).

    After upgrading from 2.2.2 to 2.2.6, and installing ruby-lsapi 2.0, everything is working fine.

    Thanks for your work


Share This Page