当前位置: 首页 > 知识库问答 >
问题:

在Spring Boot的请求目标中发现无效字符

於意蕴
2023-03-14

我的应用程序是用1.5.6版本的Java-JAR启动的。spring Boot的发行版。
我的一个请求的内容带有字符“{”。当它发送到服务器时,会引发以下异常:

IllegalArgumentException:在请求目标中发现无效字符。有效字符定义于RFC 7230和RFC 3986中,地址为org.apache.coyote.http11.http11inputbuffer.parserequestline(http11inputbuffer.java:472)地址为org.apache.coyote.http11.http11processorlight.service(http11processer.java:683),地址为org.apache.coyote.abstractProcessorlight.process(abstractProcessorlight.process(abstractProcessorlight.java:66),地址为在java.util.concurrent.ThreadPoolExecutor.runworker(ThreadPoolExecutor.java:1142)在java.util.concurrent.ThreadPoolExecutor$worker.run(ThreadPoolExecutor.java:617)在org.apache.tomcat.util.threads.taskThread$wrappingrunnable.run(taskThread.java:61)在java.lang.thread.run(thread.java:745)

哪里错了?我怎么修好它?

Edit1:
我的Rest是这样的:

var jsonData = {
                    id: $("#hiddenId").val(),
                    permitNumber: $("#txtPermitNumber").val(),
                    permitToDate: $("#txtPermitToDate").val()
               }
document.location = restUrl + "/print?reportParams= " + JSON.stringify(jsonData);

共有1个答案

陈增
2023-03-14

根据https://tomcat.apache.org/tomcat-8.5-doc/config/systemprops.html,requestTargetAllow是不推荐的。对我来说,这里提出的其他解决方案也不起作用。根据Tomcat文档,我找到了一种设置relaxedQueryChars属性的方法:

@Bean
public ConfigurableServletWebServerFactory webServerFactory() {
    TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
    factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
        @Override
        public void customize(Connector connector) {
            connector.setProperty("relaxedQueryChars", "|{}[]");
        }
    });
    return factory;
}
 类似资料:
  • 在Tomcat 7到Tomcat 9下正常工作的项目迁移中,当在请求中传递带有重音的单词时,我收到了请求目标中发现的错误无效字符。 server.xml文件是通过在连接器"中引入来修改的,并且还引入了子句,但是我仍然收到相同的错误。我不能触摸项目的实际代码。 日志跟踪显示:

  • 我正在尝试根据下面的代码提出帖子请求: 此请求不需要身份验证,也不需要登录和密码。在邮递员那里,我可以成功地提出请求,但当我尝试执行上述代码时,我得到了: 401未经授权 我在邮递员那里模拟了错误,它给了我下面的信息: 当我在Postman中将身份验证方法更改为“No Auth”时,请求运行良好。 我想我必须在代码中设置这个选项“No Auth”,但我不知道如何设置。 我这样做: 但错误仍在继续。

  • 我正在使用restTemplate发出post请求,并收到以下错误:无法找到到请求目标的有效证书路径 我的方法如下:

  • 我在Flutter中创建了一个新应用程序。我尝试在Android Mobile上运行该应用程序。它显示在错误下方。 但当我试图在Chrome或Edge(网络设备)上运行同样的程序时。它在跑。

  • 请你帮忙。我有一个Codenameone应用程序,它向云Tomcat 8服务器发出GET请求,并期望返回一些响应。重要的是,这是一个HTTPS通话。 当我在Postman中运行请求时,它工作正常: https://www.mydomain.co.uk:8443/MyProject/v1/generate_token 同一个URL在我的浏览器中工作并显示为“安全”,我可以看到我的证书详细信息。我已经

  • 配置Spring Security 3.2后,csrf。令牌未绑定到请求或会话对象。 这是Spring Security配置: login.jsp文件 它呈现下一个html: 结果是403 HTTP状态: 在一些调试之后更新,请求对象以良好的形式发出DelegatingFilterProxy,但在CoyoteAdapter的469行中,它执行请求。回收();这会删除所有属性。。。 我使用JDK 1