XPages und Reverse-Proxies

Beim Aufsetzen eines Reverse-Proxies gilt es im Zusammenspiel mit XPage-basierten Web-Applikationen ein Detail zu berücksichtigen: Für die Implementierung des Partial Refresh-Mechanismus mußte ein zusätzlicher HTTP-Header eingeführt werden, durch den u.a. Redirects an den Webbrowser gesteuert werden.

Da im Zusammenspiel mit AJAX-basierten Aktionen wie dem Partial Refresh nicht mit vom Server gelieferten HTTP-Responsecodes (302 bzw. 307)  gearbeitet werden kann, wird der HTTP-Response der HTTP-Header „X-XspLocation“ angehängt.

Beim Öffnen eines Server-seitigen Links wird so dem Browser mitgeteilt, wohin die Reise geht, und die eigentliche Umleitung wird Clientseitig (via JavaScript) durchgeführt. Wird der Header also nicht durch die Regeln im Reverse-Proxy überarbeitet, funktioniert die Applikation höchstwahrscheinlich nicht.

Hier ein kurzes Beispiel und die HTTP-Daten, die durch Klicken auf den Link gesendet werden.

Beispiel-Code eines Links in der XPage:

 <xp:link escape="true" id="link1" text="ServerSideLink">
 <xp:eventHandler event="onclick" submit="true"
 refreshMode="norefresh" execMode="partial">
 <xp:this.action>
 <xp:actionGroup>
 <xp:openPage name="/XPage2Open.xsp" />
 </xp:actionGroup>
 </xp:this.action>
 </xp:eventHandler>
</xp:link>

HTTP Request (Client an Server)

POST /xpage.nsf/current.xsp?$$ajaxmode=full&$$ajaxid=%40none HTTP/1.1
Host: blog.hasselba.ch
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) ...
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,...
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: https://blog.hasselba.ch/xpages.nsf/current.xsp
Content-Length: 306
Cookie: DomAuthSessId=XXXXX; SessionID=XXXX
Pragma: no-cacheCache-Control: no-cache

[Fett hervorgehoben: Standard-Header bei AJAX-Requests]

HTTP Response (Server an Client)

HTTP/1.1 200 OK
Server: Lotus-Domino
Date: Thu, 09 Jun 2011 06:22:56 GMT
X-XspLocation: http://blog.hasselba.ch/xpages.nsf/XPage2Open.xsp
Content-Length: 20
Connection: Keep-Alive
Content-Encoding: gzip

[Fett hervorgehoben: Der Header mit dem neuen Ziel. Der Client öffnet die Seite via JavaScript]

Dieser Beitrag wurde unter Allgemein, XPages abgelegt und mit , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

2 Antworten zu XPages und Reverse-Proxies

  1. Pingback: Performance-Tuning (5): Links und xsp.redirect | blog@hasselba.ch

  2. Sjef Bosman sagt:

    Beispiel für Apache2:

    Header edit X-XspLocation /website.nsf/page.xsp/ /

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.