Do not rewrite relative links with FixedVersionStrategy
Prior to this change, the resource handling FixedVersionStrategy would be applied on all links that match the configured pattern. This is problematic for relative links and can lead to rewritten links such as "/fixedversion/../css/main.css" which breaks. This commit prevents that Strategy from being applied to such links. Of course, one should avoid to use that VersionStrategy with relative links, but this change aims at not breaking existing links even if it means not prefixing the version as expected. Issue: SPR-13727
This commit is contained in:
@@ -100,7 +100,12 @@ public abstract class AbstractVersionStrategy implements VersionStrategy {
|
||||
|
||||
@Override
|
||||
public String addVersion(String path, String version) {
|
||||
return (this.prefix.endsWith("/") || path.startsWith("/") ? this.prefix + path : this.prefix + "/" + path);
|
||||
if(path.startsWith(".")) {
|
||||
return path;
|
||||
}
|
||||
else {
|
||||
return (this.prefix.endsWith("/") || path.startsWith("/") ? this.prefix + path : this.prefix + "/" + path);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -57,7 +57,14 @@ public class FixedVersionStrategyTests {
|
||||
|
||||
@Test
|
||||
public void addVersion() throws Exception {
|
||||
assertEquals(this.version + "/" + this.path, this.strategy.addVersion(this.path, this.version));
|
||||
assertEquals(this.version + "/" + this.path, this.strategy.addVersion("/" + this.path, this.version));
|
||||
}
|
||||
|
||||
// SPR-13727
|
||||
@Test
|
||||
public void addVersionRelativePath() throws Exception {
|
||||
String relativePath = "../" + this.path;
|
||||
assertEquals(relativePath, this.strategy.addVersion(relativePath, this.version));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user