struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Yasser Zamani (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (WW-4263) DefaultHttpHeaders.compareIfModifiedSince() throws ParseException when the locale of the web browser is different to the server
Date Fri, 20 Dec 2013 11:20:10 GMT

    [ https://issues.apache.org/jira/browse/WW-4263?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13853874#comment-13853874
] 

Yasser Zamani commented on WW-4263:
-----------------------------------

According to "[If-Modified-Since date formats in Firefox and IE7|http://blog.lolyco.com/sean/2008/06/21/if-modified-since-date-formats-in-firefox-and-ie7/#comment-157]"
blog post, the bowser is recommended to store the exact date/time sent from the server:
{quote}
The HTTP spec recommends that the client store the exact date/time sent from the server, in
the format the server sent it. So Firefox does this and if your server sends timestamps in
the Last-Modified header in some funky format the browser will spit it back out in that same
format.
{quote}
So I recommend to also improve what plugin sends to client to be a HTTP-date!

Also, according to [RFC 2616|http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html]:
{quote}
 HTTP applications have historically allowed three different formats for the representation
of date/time stamps:
      Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 822, updated by RFC 1123
      Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
      Sun Nov  6 08:49:37 1994       ; ANSI C's asctime() format
{quote}
So I recommend to add support for two last ones, i.e. RFC 850 and ANSI C's asctime() format.

> DefaultHttpHeaders.compareIfModifiedSince() throws ParseException when the locale of
the web browser is different to the server
> -------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: WW-4263
>                 URL: https://issues.apache.org/jira/browse/WW-4263
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Plugin - REST
>    Affects Versions: 2.3.15.3
>            Reporter: Harry Chan
>              Labels: restful
>             Fix For: 2.3.17
>
>
> I am using the RESTFul  plugin and this exception is thrown when I visit the page enabled
*Caching*.
> When I trigger an action from my web browser, it pass the *If-Modified-Since* attribute
to server side and the locale of it date format is in *en* - *Wed, 18 Dec 2013 16:00:00 GMT*.

> Then, in the server side, the *DefaultHttpHeaders* uses the method *compareIfModifiedSince()*
to check if it should return the cached data. However, I found that the *DefaultHttpHeaders.compareIfModifiedSince()*
would use the *default locale* of the server for parsing the *If-Modified-Since* input which
causes ParseException as the locale of the server is NOT same as the web browser I used.
> {code}
> 17:24:20.915 [qtp5416428-21] DEBUG o.a.struts2.rest.DefaultHttpHeaders.debug() [8139ea3e-f463-42fa-9642-ecc2b44b7a21][]
- Got error parsing If-Modified-Since header value [Wed, 18 Dec 2013 16:00:00 GMT] as [EEE,
dd MMM yyyy HH:mm:ss zzz]!
> java.text.ParseException: Unparseable date: "Wed, 18 Dec 2013 16:00:00 GMT"
> 	at java.text.DateFormat.parse(DateFormat.java:357) ~[na:1.7.0_09]
> 	at org.apache.struts2.rest.DefaultHttpHeaders.compareIfModifiedSince(DefaultHttpHeaders.java:165)
[struts2-rest-plugin-2.3.15.3.jar:2.3.15.3]
> 	at org.apache.struts2.rest.DefaultHttpHeaders.apply(DefaultHttpHeaders.java:149) [struts2-rest-plugin-2.3.15.3.jar:2.3.15.3]
> 	at org.apache.struts2.rest.RestActionInvocation.processResult(RestActionInvocation.java:190)
[struts2-rest-plugin-2.3.15.3.jar:2.3.15.3]
> 	at org.apache.struts2.rest.RestActionInvocation.invoke(RestActionInvocation.java:145)
[struts2-rest-plugin-2.3.15.3.jar:2.3.15.3]
> 	at com.opensymphony.xwork2.DefaultActionProxy.execute(DefaultActionProxy.java:147) [xwork-core-2.3.15.3.jar:2.3.15.3]
> 	at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:563) [struts2-core-2.3.15.3.jar:2.3.15.3]
> ...
> {code}



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)

Mime
View raw message