[ 
https://issues.apache.org/jira/browse/OFBIZ-281?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12552733
 ] 

Marco Risaliti commented on OFBIZ-281:
--------------------------------------

Someone knows if is this still an issue or can I close it ?
I'm the reporter only because I have copy it from the old jira issue.

> The URIEncoding parameter of the Tomcat connector does not seem to be taken 
> into account
> ----------------------------------------------------------------------------------------
>
>                 Key: OFBIZ-281
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-281
>             Project: OFBiz
>          Issue Type: Bug
>          Components: framework
>    Affects Versions: SVN trunk
>         Environment: Linux 2.6.x, firefox 1.5 
>            Reporter: Marco Risaliti
>         Attachments: URIEncoding-problem.patch, URIEncoding-quickfix.patch
>
>
> Copy of http://jira.undersunconsulting.com/browse/OFBIZ-861 from Peter Goron.
> =======================================================
> When I create an entity value which contains UTF-8 characters in its primary 
> keys, I'm unable to access it via webtools entity data maintenance or its 
> corresponding management interface in backend. 
> For example, if you create a new Security Group from partymgr application 
> with theses parameters : 
> id = Securité 
> description = Test 
> Then you try to select the newly created Security Group from Security Group 
> List or you type this url : 
> https://127.0.0.1:8443/partymgr/control/EditSecurityGroup?groupId=securit%C3%A9
>  
> you should obtain an Edit Security Group form with theses parameters : 
> id = securité -[CommonCannotBeFound: [securité]]- 
> description = 
> The symptoms are similar when you try to access to this entity via webtools 
> https://127.0.0.1:8443/webtools/control/ViewGeneric?entityName=SecurityGroup&groupId=securit%C3%A9
>  
> -> Specified SecurityGroup was not found. 
> The problem is not specific to SecurityGroup entity, it can be reproduced for 
> all entities. 
> After some search, it appears that request.getParameter(pkField) doesn't 
> decode 
> correctly the UTF-8 sequence "%C3%A9" whereas URIEncoding of HTTP(S) 
> connector is 
> set to UTF-8. 
> The patch 'URIEncoding-problem.patch' try to demonstrate that the URIEncoding 
> specified in base/config/ofbiz-containers.xml (UTF-8) is not set at the 
> connector level. After having applied the patch, recompiled Ofbiz and 
> restarted it, the following lines should appear at the end of Ofbiz loading. 
> 32017 (main) [ CatalinaContainer.java:238:INFO ] Connector AJP/1.3 @ 8009 - 
> not-secure URIEncoding=null [org.apache.jk.server.JkCoyoteHandler] started. 
> 32018 (main) [ CatalinaContainer.java:235:INFO ] Connector HTTP/1.1 @ 8080 - 
> not-secure URIEncoding=null [org.apache.coyote.http11.Http11Protocol] 
> started. 
> 32018 (main) [ CatalinaContainer.java:235:INFO ] Connector TLS @ 8443 - 
> secure URIEncoding=null [org.apache.coyote.http11.Http11Protocol] started. 
> 32022 (main) [ CatalinaContainer.java:242:INFO ] Started Apache Tomcat/5.5.9 
> I've written a small workaround that use setURIEncoding instead of 
> setProperty 
> Connector's method. After having applied the patch 
> 'URIEncoding-quickfix.patch', 
> recompiled Ofbiz and restarted it, you should see the following lines at the 
> end 
> of ofbiz loading. 
> 20551 (main) [ CatalinaContainer.java:238:INFO ] Connector AJP/1.3 @ 8009 - 
> not-secure URIEncoding=UTF-8 [org.apache.jk.server.JkCoyoteHandler] started. 
> 20552 (main) [ CatalinaContainer.java:235:INFO ] Connector HTTP/1.1 @ 8080 - 
> not-secure URIEncoding=UTF-8 [org.apache.coyote.http11.Http11Protocol] 
> started. 
> 20552 (main) [ CatalinaContainer.java:235:INFO ] Connector TLS @ 8443 - 
> secure URIEncoding=UTF-8 [org.apache.coyote.http11.Http11Protocol] started. 
> 20602 (main) [ CatalinaContainer.java:242:INFO ] Started Apache Tomcat/5.5.9 
> With this patch the problem disapear but I don't think it is the right 
> solution. 
> I think the behavior of the setProperty(String, String) method of Tomcat 
> Connector class has changed in 5.5.x series. When you look at its source code 
> : 
> (http://svn.apache.org/repos/asf/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/connector/Connector.java)
>  
> it seems this method only set parameters of the protocol handler. And 
> URIEncoding is a parameter of the connector and not of the protocol handler. 
> This problem does not appear in the non-embedded version of tomcat because 
> they use 
> common-digester to map xml elements and attributes of configuration file to 
> setters 
> of Connector object. 
> Can someone confirm this problem ?
>  
>  
>  All    Comments    Work Log    Change History       Sort Order:   
> Comment by David E. Jones [24/Apr/06 12:16 AM] [ Permlink ] 
> This is actually a bigger issue than you might think. Even if the tomcat 
> setting is in there properly, there are still problems so I HIGHLY recommend 
> agains't trying to use UTF-8 characters in an HTTP URL. Below is some 
> research I did on this a while back: 
> ======================================================================== 
> I tried various changes to setting of the character encoding on the request. 
> With no character encoding neither URI parameters nor the form input (POST) 
> are decoded properly. When UTF-8 character encoding is used the form input 
> (POST) parameters are decoded properly, but not the URI parameters. 
> After playing around and verifying a few things I started to do research in 
> the Tomcat bug tracking site and found some other things to try there, but 
> the results are not very encouraging. The clippings below are from the 
> following URL: 
> http://issues.apache.org/bugzilla/show_bug.cgi?id=23929 
> Based on this I have changed the URIEncoding to UTF-8, but it does not seem 
> to fix the problem. I tried this with the useBodyEncodingForURI with both 
> possible values, ie true and false. In none of these conditions did it work 
> with Safari or Firefox (Camino and other Mozilla-based browsers seem to 
> behave the same). I did not try any of these with IE on Windows because if 
> these browsers (especially Firefox) do not work, it doesn't really matter, 
> but I suspect IE will have a similar problem based on what we were seeing 
> before when we did test it with IE on Windows in the VNC session. 
> It looks like the best set of values for these is URIEncoding=UTF-8 and 
> useBodyEncodingForURI=false, but even with those settings it is not working 
> properly and according to the Tomcat guys, there isn't any way to really get 
> this working. 
> So, based on all of this my recommendation is to restrict ID values to the 
> ISO-8859-1 character set. Actually, anything that is passed as a URI 
> parameter needs to be this way. Parameters that are passed with forms using 
> input tags and such can have UTF-8 characters and it appears to work 
> reliably. 
> BTW, I also tried using our variation on the standard ?= and &= syntax of URI 
> parameters, which is the /~= syntax (ie /~productId=África instead of 
> ?productId=África), and that did not work either, which is to be expected as 
> it is also part of the URI string. 
> The only other thing I can think of to try is doing our own UTF-8 decoding of 
> URI parameter values. I'm not sure it is feasible or will work reliably (or 
> at all), but may be worth a try. 
> -David 
> =========================================== 
> Sorry, there's no bug. BZ is not there to discuss design decisions. If you 
> want 
> to do so, post on tomcat-dev. The only standard for URL encoding is to use 
> UTF-8, but nobody follows the standard. You can also now configure the URI 
> encoding in the connector. If you insist on using i18n with URL parameters, 
> the 
> result is that it won't work reliably, but of course, you're free to do what 
> you 
> want ;-) 
> Please do not reopen the report. 
> =========================================== 
> AND 
> =========================================== 
> From Mark: 
> Character encoding has been the source of quite a bit of debate on the 
> tomcat- 
> dev list in recent weeks. There have been a few changes (see summary below) 
> as 
> a result. Essentially some additional configuration options have been 
> provided. The UTF-8 issue (also reported in bug 22666) has also been fixed. 
> Character encoding summary: 
> There are a number of situations where there may be a requirement to use non- 
> US ASCII characters in a URI. These include: 
> - Parameters in the query string 
> - Servlet paths 
> There is a standard for encoding URIs (http://www.w3.org/International/O-URL- 
> code.html) but this standard is not consistently followed by clients. This 
> causes a number of problems. 
> The functionality provided by Tomcat (4 and 5) to handle this less than ideal 
> situation is described below. 
> 1. The Coyote HTTP/1.1 connector has a useBodyEncodingForURI attribute which 
> if set to true will use the request body encoding to decode the URI query 
> parameters. 
>   - The default value is true for TC4 (breaks spec but gives consistent 
> behaviour across TC4 versions) 
>   - The default value is false for TC5 (spec compliant but there may be 
> migration issues for some apps) 
> 2. The Coyote HTTP/1.1 connector has a URIEncoding attribute which defaults 
> to 
> ISO-8859-1. 
> 3. The parameters class (o.a.t.u.http.Parameters) has a QueryStringEncoding 
> field which defaults to the URIEncoding. It must be set before the parameters 
> are parsed to have an effect. 
> Things to note regarding the servlet API: 
> 1. HttpServletRequest.setCharacterEncoding() normally only applies to the 
> request body NOT the URI. 
> 2. HttpServletRequest.getPathInfo() is decoded by the web container. 
> 3. HttpServletRequest.getRequestURI() is not decoded by container. 
> Other tips: 
> 1. Use POST with forms to return parameters as the parameters are then part 
> of 
> the request body. 
> =========================================== 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to