-
-
Notifications
You must be signed in to change notification settings - Fork 969
Closed
Milestone
Description
Expected Behavior
No response
Actual Behaviour
WebUtils.retrieveGrailsWebRequest().getBaseUrl() does not return a consistent request base URL when:
X-Forwarded-Protorequest header is definedX-Forwarded-Portrequest header is not defined
Steps To Reproduce
Example:
curl -H 'X-Forwarded-Proto: https' https://my.domain.com/path
MyController.groovy
def debug() {
println WebUtils.retrieveGrailsWebRequest().getBaseUrl()
}
Output:
https://my.domain.com:null
There's an ambiguous logical expression at
grails-core/grails-web-common/src/main/groovy/org/grails/web/servlet/mvc/GrailsWebRequest.java
Lines 475 to 479 in 13617a4
| } else if (forwardedPort != null && | |
| ("http".equals(forwardedScheme) && !"80".equals(forwardedPort)) || | |
| ("https".equals(forwardedScheme) && !"443".equals(forwardedPort))) { | |
| sb.append(":").append(forwardedPort); | |
| } |
where
forwardedScheme= "https"forwardedPort= null
The if statement is in the form of A && B || C, while it should be A && (B || C), as forwardedPort is indeed null.
Environment Information
Not relevant
Example Application
No response
Version
Issue found on Grails 6.x
SimonWoidig and JeanMoravec
Metadata
Metadata
Assignees
Labels
No labels
Type
Projects
Status
Done