@@ -435,43 +435,6 @@ public function testGetHost()
435
435
436
436
$ request ->initialize (array (), array (), array (), array (), array (), array ('SERVER_NAME ' => 'www.exemple.com ' , 'HTTP_HOST ' => 'www.host.com ' ));
437
437
$ this ->assertEquals ('www.host.com ' , $ request ->getHost (), '->getHost() value from Host header has priority over SERVER_NAME ' );
438
-
439
- Request::setTrustedProxies (array ('1.1.1.1 ' ));
440
-
441
- // X_FORWARDED_HOST
442
- $ request ->initialize (array (), array (), array (), array (), array (), array ('HTTP_X_FORWARDED_HOST ' => 'www.exemple.com ' ));
443
- $ this ->assertEquals ('www.exemple.com ' , $ request ->getHost (), '->getHost() from X_FORWARDED_HOST ' );
444
-
445
- // X_FORWARDED_HOST
446
- $ request ->initialize (array (), array (), array (), array (), array (), array ('HTTP_X_FORWARDED_HOST ' => 'www.exemple.com, www.second.com ' ));
447
- $ this ->assertEquals ('www.second.com ' , $ request ->getHost (), '->getHost() value from X_FORWARDED_HOST use last value ' );
448
-
449
- // X_FORWARDED_HOST with port number
450
- $ request ->initialize (array (), array (), array (), array (), array (), array ('HTTP_X_FORWARDED_HOST ' => 'www.exemple.com, www.second.com:8080 ' ));
451
- $ this ->assertEquals ('www.second.com ' , $ request ->getHost (), '->getHost() value from X_FORWARDED_HOST with port number ' );
452
-
453
- $ request ->initialize (array (), array (), array (), array (), array (), array ('HTTP_HOST ' => 'www.exemple.com ' , 'HTTP_X_FORWARDED_HOST ' => 'www.forward.com ' ));
454
- $ this ->assertEquals ('www.forward.com ' , $ request ->getHost (), '->getHost() value from X_FORWARDED_HOST has priority over Host ' );
455
-
456
- $ request ->initialize (array (), array (), array (), array (), array (), array ('SERVER_NAME ' => 'www.exemple.com ' , 'HTTP_X_FORWARDED_HOST ' => 'www.forward.com ' ));
457
- $ this ->assertEquals ('www.forward.com ' , $ request ->getHost (), '->getHost() value from X_FORWARDED_HOST has priority over SERVER_NAME ' );
458
-
459
- // custom X_FORWARDED_HOST header name
460
- Request::setTrustedHeaderName ('client_host ' , 'X_MY_HOST ' );
461
- $ request ->initialize (array (), array (), array (), array (), array (), array ('SERVER_NAME ' => 'www.exemple.com ' , 'HTTP_X_MY_HOST ' => 'www.forward.com ' ));
462
- $ this ->assertEquals ('www.forward.com ' , $ request ->getHost (), '->getHost() value from custom header name has priority over SERVER_NAME ' );
463
-
464
- // X_FORWARDED_HOST ignored when custom header name is empty
465
- Request::setTrustedHeaderName ('client_host ' , null );
466
- $ request ->initialize (array (), array (), array (), array (), array (), array ('SERVER_NAME ' => 'www.exemple.com ' , 'HTTP_X_FORWARDED_HOST ' => 'www.forward.com ' ));
467
- $ this ->assertEquals ('www.exemple.com ' , $ request ->getHost (), '->getHost() value from X_FORWARDED_HOST has priority over SERVER_NAME ' );
468
-
469
- Request::setTrustedHeaderName ('client_host ' , 'X_FORWARDED_HOST ' );
470
- Request::setTrustedProxies (array ());
471
-
472
- // X_FORWARDED_HOST ignored when no trusted proxies
473
- $ request ->initialize (array (), array (), array (), array (), array (), array ('SERVER_NAME ' => 'www.exemple.com ' , 'HTTP_X_FORWARDED_HOST ' => 'www.forward.com ' ));
474
- $ this ->assertEquals ('www.exemple.com ' , $ request ->getHost (), '->getHost() value from X_FORWARDED_HOST has priority over SERVER_NAME ' );
475
438
10000
}
476
439
477
440
/**
@@ -830,32 +793,6 @@ public function testGetRequestFormat()
830
793
$ this ->assertEquals ('foo ' , $ request ->getRequestFormat (null ));
831
794
}
832
795
833
- public function testForwardedSecure ()
834
- {
835
- $ request = Request::create ('http://test.com/ ' );
836
- $ request ->headers ->set ('X-Forwarded-Proto ' , 'https ' );
837
- $ request ->headers ->set ('X-Forwarded-Port ' , 443 );
838
-
839
- $ this ->assertFalse ($ request ->isSecure ());
840
- $ this ->assertEquals (80 , $ request ->getPort ());
841
-
842
- Request::setTrustedProxies (array ('1.1.1.1 ' ));
843
-
844
- $ this ->assertTrue ($ request ->isSecure ());
845
- $ this ->assertEquals (443 , $ request ->getPort ());
846
-
847
- // custom header names
848
- Request::setTrustedHeaderName ('client_proto ' , 'X-My-Proto ' );
849
- Request::setTrustedHeaderName ('client_port ' , 'X-My-Port ' );
850
- $ request ->headers ->set ('X-My-Proto ' , 'http ' );
851
- $ request ->headers ->set ('X-My-Port ' , 81 );
852
-
853
- $ this ->assertFalse ($ request ->isSecure ());
854
- $ this ->assertEquals (81 , $ request ->getPort ());
855
-
856
- Request::setTrustedProxies (array ());
857
- }
858
-
859
796
public function testHasSession ()
860
797
{
861
798
$ request = new Request ;
@@ -908,6 +845,70 @@ public function splitHttpAcceptHeaderData()
908
845
array ('text/html,application/xhtml+xml ' , array ('application/xhtml+xml ' => 1 , 'text/html ' => 1 )),
909
846
);
910
847
}
848
+
849
+ public function testTrustedProxies ()
850
+ {
851
+ $ request = Request::create ('http://example.com/ ' );
852
+ $ request ->server ->set ('REMOTE_ADDR ' , '3.3.3.3 ' );
853
+ $ request ->headers ->set ('X_FORWARDED_FOR ' , '1.1.1.1, 2.2.2.2 ' );
854
+ $ request ->headers ->set ('X_FORWARDED_HOST ' , 'foo.example.com, real.example.com:8080 ' );
855
+ $ request ->headers ->set ('X_FORWARDED_PROTO ' , 'https ' );
856
+ $ request ->headers ->set ('X_FORWARDED_PORT ' , 443 );
857
+ $ request ->headers ->set ('X_MY_FOR ' , '3.3.3.3, 4.4.4.4 ' );
858
+ $ request ->headers ->set ('X_MY_HOST ' , 'my.example.com ' );
859
+ $ request ->headers ->set ('X_MY_PROTO ' , 'http ' );
860
+ $ request ->headers ->set ('X_MY_PORT ' , 81 );
861
+
862
+ // no trusted proxies
863
+ $ this ->assertEquals ('3.3.3.3 ' , $ request ->getClientIp ());
864
+ $ this ->assertEquals ('example.com ' , $ request ->getHost ());
865
+ $ this ->assertEquals (80 , $ request ->getPort ());
866
+ $ this ->assertFalse ($ request ->isSecure ());
867
+
868
+ // trusted proxy via deprecated trustProxyData()
869
+ Request::trustProxyData ();
870
+ $ this ->assertEquals ('2.2.2.2 ' , $ request ->getClientIp ());
871
+ $ this ->assertEquals ('real.example.com ' , $ request ->getHost ());
872
+ $ this ->assertEquals (443 , $ request ->getPort ());
873
+ $ this ->assertTrue ($ request ->isSecure ());
874
+
875
+ // disabling proxy trusting
876
+ Request::setTrustedProxies (array ());
877
+ $ this ->assertEquals ('3.3.3.3 ' , $ request ->getClientIp ());
878
+ $ this ->assertEquals ('example.com ' , $ request ->getHost ());
879
+ $ this ->assertEquals (80 , $ request ->getPort ());
880
+ $ this ->assertFalse ($ request ->isSecure ());
881
+
882
+ // trusted proxy via setTrustedProxies()
883
+ Request::setTrustedProxies (array ('3.3.3.3 ' , '2.2.2.2 ' ));
884
+ $ this ->assertEquals ('1.1.1.1 ' , $ request ->getClientIp ());
885
+ $ this ->assertEquals ('real.example.com ' , $ request ->getHost ());
886
+ $ this ->assertEquals (443 , $ request ->getPort ());
887
+ $ this ->assertTrue ($ request ->isSecure ());
888
+
889
+ // custom header names
890
+ Request::setTrustedHeaderName ('client_ip ' , 'X_MY_FOR ' );
891
+ Request::setTrustedHeaderName ('client_host ' , 'X_MY_HOST ' );
892
+ Request::setTrustedHeaderName ('client_port ' , 'X_MY_PORT ' );
893
+ Request::setTrustedHeaderName ('client_proto ' , 'X_MY_PROTO ' );
894
+ $ this ->assertEquals ('4.4.4.4 ' , $ request ->getClientIp ());
895
+ $ this ->assertEquals ('my.example.com ' , $ request ->getHost ());
896
+ $ this ->assertEquals (81 , $ request ->getPort ());
897
+ $ this ->assertFalse ($ request ->isSecure ());
898
+
899
+ // disabling via empty header names
900
+ Request::setTrustedHeaderName ('client_ip ' , null );
901
+ Request::setTrustedHeaderName ('client_host ' , null );
902
+ Request::setTrustedHeaderName ('client_port ' , null );
903
+ Request::setTrustedHeaderName ('client_proto ' , null );
904
+ $ this ->assertEquals ('3.3.3.3 ' , $ request ->getClientIp ());
905
+ $ this ->assertEquals ('example.com ' , $ request ->getHost ());
906
+ $ this ->assertEquals (80 , $ request ->getPort ());
907
+ $ this ->assertFalse ($ request ->isSecure ());
908
+
909
+ // reset
910
+ Request::setTrustedProxies (array ());
911
+ }
911
912
}
912
913
913
914
class RequestContentProxy extends Request
0 commit comments