character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

60 阅读1分钟

1.java 特定版本会出现拦截特殊字符的问题,导致无法传递json数据

2.解决方法,项目添加一个配置文件:

import org.apache.catalina.connector.Connector;
import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.stereotype.Component;

@Component
public class PortalTomcatWebServerCustomizer implements
        WebServerFactoryCustomizer {



	@Override
	public void customize(WebServerFactory factory) {
	     TomcatServletWebServerFactory containerFactory = (TomcatServletWebServerFactory) factory;
	        containerFactory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
	            @Override
	            public void customize(Connector connector) {
	            	//这里需要转义,微博上被转换了  有其他特殊字符在第二个形参里面添加就行
	                connector.setAttribute("relaxedQueryChars", "[]|{}^\`"<>\\n;");
	                connector.setAttribute("relaxedPathChars", "[]|");
	            }
	        });
		
	}
}