1- var request = require ( 'request' )
1+ var http = require ( 'http' )
2+ , https = require ( 'https' )
23 , url = require ( 'url' )
34 , zlib = require ( 'zlib' ) ;
45
6+ const adapters = { 'http:' : http , 'https:' : https } ;
7+
58var prerender = module . exports = function ( req , res , next ) {
69 if ( ! prerender . shouldShowPrerenderedPage ( req ) ) return next ( ) ;
710
@@ -175,8 +178,6 @@ prerender.prerenderServerRequestOptions = {};
175178
176179prerender . getPrerenderedPageResponse = function ( req , callback ) {
177180 var options = {
178- uri : url . parse ( prerender . buildApiUrl ( req ) ) ,
179- followRedirect : false ,
180181 headers : { }
181182 } ;
182183 for ( var attrname in this . prerenderServerRequestOptions ) { options [ attrname ] = this . prerenderServerRequestOptions [ attrname ] ; }
@@ -195,7 +196,9 @@ prerender.getPrerenderedPageResponse = function(req, callback) {
195196 options . headers [ 'X-Prerender-Token' ] = this . prerenderToken || process . env . PRERENDER_TOKEN ;
196197 }
197198
198- request . get ( options ) . on ( 'response' , function ( response ) {
199+ const url = new URL ( prerender . buildApiUrl ( req ) ) ;
200+ // Dynamically use "http" or "https" module, since process.env.PRERENDER_SERVICE_URL can be set to http protocol
201+ adapters [ url . protocol ] . get ( url , options , ( response ) => {
199202 if ( response . headers [ 'content-encoding' ] && response . headers [ 'content-encoding' ] === 'gzip' ) {
200203 prerender . gunzipResponse ( response , callback ) ;
201204 } else {
@@ -204,6 +207,7 @@ prerender.getPrerenderedPageResponse = function(req, callback) {
204207 } ) . on ( 'error' , function ( err ) {
205208 callback ( err ) ;
206209 } ) ;
210+
207211} ;
208212
209213prerender . gunzipResponse = function ( response , callback ) {
0 commit comments