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

当url包含分号时,在Spring 5中获得500响应

姬自强
2023-03-14

我最近从Spring 3升级到Spring。早些时候,当url值包含分号时,我能够发布并获取资源。但是升级后我得到了500个错误。下面是我的get请求

/rest/logindomains/grouptorolemapping/13/Atl;BasGroup

有人知道如何解决这个问题吗?

共有3个答案

戚兴思
2023-03-14

Spring 5包含默认启用的StrictHttpFirewall。为了允许在URL中使用分号,需要使用setAllowSemicolon(boolean)方法。

姬国安
2023-03-14

要在url中启用分号,您必须调整UrlPathHelper。例如:

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
        UrlPathHelper urlPathHelper = new UrlPathHelper();
        urlPathHelper.setRemoveSemicolonContent(false);

        configurer.setUrlPathHelper(urlPathHelper);
    }
}
甘英光
2023-03-14

通过将以下xml添加到安全配置中,解决了此问题。xml。这将允许在url中使用分号和百分比字符。

<bean id="myHttpFirewall" class="org.springframework.security.web.firewall.StrictHttpFirewall">
    <property name="allowSemicolon" value="true"/>
    <property name="allowUrlEncodedPercent" value="true"/>
</bean>
<security:http-firewall ref="myHttpFirewall"/>

Java解决方案:

@Component
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter
{
private static final DebugLog LOG = new DebugLog("WebSecurityConfig", WebSecurityConfig.class);

@Bean
public HttpFirewall allowUrlEncodedSlashHttpFirewall() {
    StrictHttpFirewall firewall = new StrictHttpFirewall();
    firewall.setAllowUrlEncodedPercent(true);;
    firewall.setAllowSemicolon(true);
    return firewall;
}

@Override
public void configure(WebSecurity web) throws Exception {
  super.configure(web);
  // @formatter:off
  web.httpFirewall(allowUrlEncodedSlashHttpFirewall());
}
 类似资料:
  • 以下URL用于在SpringBoot2.5中返回200 http://localhost:8080//actuator/health 升级到2.6后,它不再工作,返回404 Not Found 我发现这个错误是因为项目的一些集成测试失败了(请求返回404)。然后我注意到双斜杠,去掉后,问题就解决了。 我只是想了解是什么特性导致了这种新行为? 我把2.6的发行说明看了好几遍,但都没什么值得注意的。

  • 在json中传递变量中的值时出现以下问题。encode没有得到例外的响应,但是我在传递值时没有得到正确的响应,我尝试使用map和不同的头无法得到确切的问题。 > 不工作 字符串getvalue=“响应值”;var_body=json。编码({“context”:getvalue}); var res=等待http。post(链接,标题:{“内容类型”:“应用程序/json”,},正文:\正文);

  • 本文向大家介绍找出varchar在MySQL中是否包含百分号?,包括了找出varchar在MySQL中是否包含百分号?的使用技巧和注意事项,需要的朋友参考一下 要在MySQL中找出包含百分号的varchar,可以使用LIKE运算符。语法如下- 为了理解上述语法,让我们创建一个表。创建表的查询如下- 使用insert命令插入一些带有%符号的记录。查询如下- 使用select语句显示表中的所有记录。查

  • 我需要从url得到字符串在哪里是“?”但是控制器不接受“?” 我需要发送一些类似“你好世界?”但我只得到“你好世界” 我找到了点(.)的解决方案--value=“{texttoTransform:.+}”

  • 问题内容: 如何使用Python获取当前网址, 我需要获取当前URL,以便可以检查查询字符串,例如 这也在Google App Engine中运行 问题答案: 尝试这个: 另外,如果您只需要querystring,这将起作用: 最后,如果您知道要查找的querystring变量,则可以执行以下操作:

  • 问题内容: 有一个页面(URL),我通过XMLHttpRequest请求它,但是我没有从所请求的URL获得响应,而是将请求定向到另一个页面, 请求-> page.php* 从> directedpage.php 获得响应 * 问题是如何获取响应网址?(例如directedpage.php) 问题答案: 最终URL(在所有重定向之后)在实例的属性中可用。此功能是新增功能,仅在2014年9月[参考]稳