Skip to content

Commit f1297bb

Browse files
committed
greengerong#44 added provision for specifying protocol
1 parent 5044b19 commit f1297bb

File tree

4 files changed

+24
-10
lines changed

4 files changed

+24
-10
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ example: someproxy,someproxy1
5454
Important for servers behind reverse proxy that need the public url to be used for pre-rendering.
5555
We usually set the original url in an http header which is added by the reverse proxy (similar to the more standard `x-forwarded-proto` and `x-forwarded-for`)
5656

57+
### protocol
58+
If you specifically want to make sure that the Prerender service queries using http or https protocol, you can set the init-param `protocol` to `https` or `http` respectively.
59+
5760
### Using your own prerender service
5861

5962
If you've deployed the prerender service on your own, set the `PRERENDER_SERVICE_URL` environment variable so that this package points there instead. Otherwise, it will default to the service already deployed at `http://service.prerender.io/`

src/main/java/com/github/greengerong/PreRenderSEOFilter.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,23 @@
11
package com.github.greengerong;
22

3-
import com.google.common.collect.Lists;
4-
import com.google.common.collect.Maps;
5-
6-
import javax.servlet.*;
7-
import javax.servlet.http.HttpServletRequest;
8-
import javax.servlet.http.HttpServletResponse;
93
import java.io.IOException;
10-
import java.util.HashMap;
114
import java.util.List;
125
import java.util.Map;
6+
import javax.servlet.Filter;
7+
import javax.servlet.FilterChain;
8+
import javax.servlet.FilterConfig;
9+
import javax.servlet.ServletException;
10+
import javax.servlet.ServletRequest;
11+
import javax.servlet.ServletResponse;
12+
import javax.servlet.http.HttpServletRequest;
13+
import javax.servlet.http.HttpServletResponse;
14+
import com.google.common.collect.Lists;
15+
import com.google.common.collect.Maps;
1316

1417
public class PreRenderSEOFilter implements Filter {
1518
public static final List<String> PARAMETER_NAMES = Lists.newArrayList("preRenderEventHandler", "proxy", "proxyPort",
1619
"prerenderToken", "forwardedURLHeader", "crawlerUserAgents", "extensionsToIgnore", "whitelist",
17-
"blacklist", "prerenderServiceUrl");
20+
"blacklist", "prerenderServiceUrl", "protocol");
1821
private PrerenderSeoService prerenderSeoService;
1922

2023
@Override

src/main/java/com/github/greengerong/PrerenderConfig.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,10 @@ public String getPrerenderToken() {
7979
public String getForwardedURLHeader() {
8080
return config.get("forwardedURLHeader");
8181
}
82+
83+
public String getProtocol() {
84+
return config.get("protocol");
85+
}
8286

8387
public List<String> getCrawlerUserAgents() {
8488
List<String> crawlerUserAgents = Lists.newArrayList("baiduspider",

src/main/java/com/github/greengerong/PrerenderSeoService.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,12 +179,16 @@ private void copyRequestHeaders(HttpServletRequest servletRequest, HttpRequest p
179179
}
180180

181181
private String getRequestURL(HttpServletRequest request) {
182-
if (prerenderConfig.getForwardedURLHeader() != null) {
182+
if (StringUtils.isNotEmpty(prerenderConfig.getForwardedURLHeader())) {
183183
String url = request.getHeader(prerenderConfig.getForwardedURLHeader());
184-
if (url != null) {
184+
if (StringUtils.isNotEmpty(url)) {
185185
return url;
186186
}
187187
}
188+
if (StringUtils.isNotEmpty(prerenderConfig.getProtocol())) {
189+
String url = request.getRequestURL().toString();
190+
return url.replace(request.getScheme(), prerenderConfig.getProtocol());
191+
}
188192
return request.getRequestURL().toString();
189193
}
190194

0 commit comments

Comments
 (0)