On Mar 26, 2008, at 9:40 AM, Serge Cohen wrote:
Hello list;
In the application I'm currently working on, I sometimes have to
turn to HTTPS (decision made at runtime) using the following code in
Session.appendToResponse :
public void appendToResponse(WOResponse aResponse, WOContext
aContext) {
// Shall we ask for HTTPS or HTTP (or leave the transport as it is).
boolean tmpRequestIsSecure =
RequestAdditions.isSecure(aContext.request());
super.appendToResponse(aResponse, aContext);
if ((requireSecure && !tmpRequestIsSecure) || (requireNotSecure
&& tmpRequestIsSecure)) {
// We have to redirect towards the same page, but different schema
String schema = (requireSecure) ? "https" : "http";
String redirectToURL = schema + "://" +
RequestAdditions.hostName(aContext.request()) +
aContext.componentActionURL();
aResponse.setStatus(302);
aResponse.setHeader(redirectToURL, "Location");
NSLog.debug.appendln("Switching schema to : " + schema + ".
Redirecting to the URL '" + redirectToURL + "'.");
}
}
Till now I was developing using WebObjects 5.3.? (+ Wonder), and
this was all working nicely. In particular, whatever this redirect
would do the URL generated by WebObjects in the html sources would
be absolute but would NOT contain the schema and host name (in other
words they'd start like '/cgi-bin/WebObjects/Incident.woa/....')
I have just upgraded to Leopard, and hence WebObjects 5.4.1 (+
Wonder).
Now the redirect still works (when enforcing 'https' usage), but
upon such a redirection all the URL generated in the page are now
'complete' URL, that is they contain the schema, the hostname and
then the rest (eg. 'http://foo.local/cgi-bin/WebObjects/Incident.woa/....')
. In particular, when turning to 'https' all the generated URLs are
now EXPLICITLY NON secured http ('http'). Still if there is no-
redirection the generated URLs are the same as before (like the one
generated by WO 5.3, non-complete URL, eg. '/cgi-bin/WebObjects/
Incident.woa/....').
I have tried to check the value of
aContext.doesGenerateCompleteURLs() (which in all cases is FALSE,
which to me means that all generated URL should be absolute path
without schema and hostname).
I realise that the former https bug of WebObjects 5.3 is now fixed
and it might be normal that my code is not working anymore, but I
could not find how I should change my code to conform to the new WO
version?
Any help or hint is very welcome !
I don't think it is your code that is broken. The URLs should start
with /cgi... regardless of whether the URL is HTTP or HTTPS. The
complete URL with scheme is only needed when switching between HTTP
and HTTPS. That said, I don't know where the problem lies. I'd
suspect a change in 5.4.1, though I don't recall hearing of this one.
Chuck
--
Practical WebObjects - for developers who want to increase their
overall knowledge of WebObjects or who are trying to solve specific
problems.
http://www.global-village.net/products/practical_webobjects
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-deploy mailing list ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-deploy/archive%40mail-archive.com
This email sent to [EMAIL PROTECTED]