Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to change Cookie Processor to LegacyCookieProcessor in tomcat 8

Tags:

My code is working on tomcat 8 version 8.0.33 but on 8.5.4 i get : An invalid domain [.mydomain] was specified for this cookie.

I have found that Rfc6265CookieProcessor is introduced in tomcat 8 latest versions.

It says on official doc that this can be reverted to LegacyCookieProcessor in context.xml but i don't know how.

Please let me know how to do this.

Thanks

like image 541
Sachin Sharma Avatar asked Aug 01 '16 10:08

Sachin Sharma


People also ask

What is context path in Tomcat?

The context path refers to the location relative to the server's address which represents the name of the web application. By default, Tomcat derives it from the name of the deployed war-file. So if we deploy a file ExampleApp. war, it will be available at http://localhost:8080/ExampleApp.

What is maxHttpHeaderSize Tomcat?

maxHttpHeaderSize. The maximum size of the request and response HTTP header, specified in bytes. If not specified, this attribute is set to 8192 (8 KB).

What is the use of context XML in Tomcat?

In Tomcat, the Context Container represents a single web application running within a given instance of Tomcat. A web site is made up of one or more Contexts. For each explicitly configured web application, there should be one context element either in server. xml or in a separate context XML fragment file.

How do I run Tomcat 8 as a service?

To run the service in console mode, you need to use the //TS// parameter. The service shutdown can be initiated by pressing CTRL+C or CTRL+BREAK. If you rename the tomcat8.exe to testservice.exe then you can just execute the testservice.exe and this command mode will be executed by default.


2 Answers

You can try in context.xml

<CookieProcessor className="org.apache.tomcat.util.http.LegacyCookieProcessor" /> 

reference: https://tomcat.apache.org/tomcat-8.0-doc/config/cookie-processor.html

like image 86
linzkl Avatar answered Nov 02 '22 16:11

linzkl


Case 1: You are using Standalone Tomcat & have access to change files in tomcat server

Please follow answer by @linzkl

Case 2: You are using Standalone Tomcat but you don't have access to change files in tomcat server

Create a new file called context.xml under src/main/webapp/META-INF folder in your application & paste the content given below

<?xml version="1.0" encoding="UTF-8"?>  <Context>   <WatchedResource>WEB-INF/web.xml</WatchedResource>   <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>   <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>    <CookieProcessor className="org.apache.tomcat.util.http.LegacyCookieProcessor" /> </Context> 

When you deploy your application in Standalone Tomcat, the context.xml file you placed under META-INF folder will override the context.xml file given in tomcat/conf/context.xml

Note: If you are following this solution, you have to do it for every single application because META-INF/context.xml is application specific

Case 3: You are using Embedded Tomcat

Create a new bean for WebServerFactoryCustomizer

@Bean WebServerFactoryCustomizer<TomcatServletWebServerFactory> cookieProcessorCustomizer() {     return new WebServerFactoryCustomizer<TomcatServletWebServerFactory>() {          @Override         void customize(TomcatServletWebServerFactory tomcatServletWebServerFactory) {             tomcatServletWebServerFactory.addContextCustomizers(new TomcatContextCustomizer() {                 @Override                 public void customize(Context context) {                     context.setCookieProcessor(new LegacyCookieProcessor());                 }             });         }     }; } 
like image 42
IamVickyAV Avatar answered Nov 02 '22 17:11

IamVickyAV