As I reported on the struts-users mailing list, netscape 4.7x apparently
treats these
two URLs as distinct:
http://xxx.yyy.zzz
http://xxx.yyy.zzz:80
and does not send cookies accepted from one when sending requests to the
other.
This problem appears when testing struts-example, using struts nightly
build
of Feb 12, and Tomcat 3.2.1.
The html taglib adds the port number when creating links, whereas
ActionServlet does not add the port number when doing forwards or
redirects.
The fix that works for me is to change
org.apache.struts.utils.RequestUtil.absoluteURL
so that it does not put the port number in the URL if it is the default
80.
(I've appended the patch.)
I'm still a mystified about why I haven't seen other reports
of this problem. Unless other webservers do something similar to
my patch within request.getServerPort(), then I believe the problem
should
have shown up in other servers besides tomcat 3.2.1. ????
Here's the diff -c:
*** /tmp/RequestUtils.java Sat Feb 17 09:30:00 2001
--- RequestUtils.java Sat Feb 17 09:32:00 2001
***************
*** 121,129 ****
try {
URL url = new URL(request.getScheme(),
! request.getServerName(),
! request.getServerPort(),
! request.getContextPath() + path);
return (url.toString());
} catch (MalformedURLException e) {
return (null);
--- 121,129 ----
try {
URL url = new URL(request.getScheme(),
! request.getServerName(),
! request.getServerPort() == 80 ? -1 : request.getServerPort(),
! request.getContextPath() + path);
return (url.toString());
} catch (MalformedURLException e) {
return (null);
Gordon