| 69 | cherrypy.tree.mount(Root(sn), sn) |
| 70 | |
| 71 | def testProxy(self): |
| 72 | self.getPage('/') |
| 73 | self.assertHeader('Location', |
| 74 | '%s://www.mydomain.test%s/dummy' % |
| 75 | (self.scheme, self.prefix())) |
| 76 | |
| 77 | # Test X-Forwarded-Host (Apache 1.3.33+ and Apache 2) |
| 78 | self.getPage( |
| 79 | '/', headers=[('X-Forwarded-Host', 'http://www.example.test')]) |
| 80 | self.assertHeader('Location', 'http://www.example.test/dummy') |
| 81 | self.getPage('/', headers=[('X-Forwarded-Host', 'www.example.test')]) |
| 82 | self.assertHeader('Location', '%s://www.example.test/dummy' % |
| 83 | self.scheme) |
| 84 | # Test multiple X-Forwarded-Host headers |
| 85 | self.getPage('/', headers=[ |
| 86 | ('X-Forwarded-Host', 'http://www.example.test, www.cherrypy.test'), |
| 87 | ]) |
| 88 | self.assertHeader('Location', 'http://www.example.test/dummy') |
| 89 | |
| 90 | # Test X-Forwarded-For (Apache2) |
| 91 | self.getPage('/remoteip', |
| 92 | headers=[('X-Forwarded-For', '192.168.0.20')]) |
| 93 | self.assertBody('192.168.0.20') |
| 94 | # Fix bug #1268 |
| 95 | self.getPage('/remoteip', |
| 96 | headers=[ |
| 97 | ('X-Forwarded-For', '67.15.36.43, 192.168.0.20') |
| 98 | ]) |
| 99 | self.assertBody('67.15.36.43') |
| 100 | |
| 101 | # Test X-Host (lighttpd; see https://trac.lighttpd.net/trac/ticket/418) |
| 102 | self.getPage('/xhost', headers=[('X-Host', 'www.example.test')]) |
| 103 | self.assertHeader('Location', '%s://www.example.test/blah' % |
| 104 | self.scheme) |
| 105 | |
| 106 | # Test X-Forwarded-Proto (lighttpd) |
| 107 | self.getPage('/base', headers=[('X-Forwarded-Proto', 'https')]) |
| 108 | self.assertBody('https://www.mydomain.test') |
| 109 | |
| 110 | # Test X-Forwarded-Ssl (webfaction?) |
| 111 | self.getPage('/ssl', headers=[('X-Forwarded-Ssl', 'on')]) |
| 112 | self.assertBody('https://www.mydomain.test') |
| 113 | |
| 114 | # Test cherrypy.url() |
| 115 | for sn in script_names: |
| 116 | # Test the value inside requests |
| 117 | self.getPage(sn + '/newurl') |
| 118 | self.assertBody( |
| 119 | "Browse to <a href='%s://www.mydomain.test" % self.scheme + |
| 120 | sn + "/this/new/page'>this page</a>.") |
| 121 | self.getPage(sn + '/newurl', headers=[('X-Forwarded-Host', |
| 122 | 'http://www.example.test')]) |
| 123 | self.assertBody("Browse to <a href='http://www.example.test" + |
| 124 | sn + "/this/new/page'>this page</a>.") |
| 125 | |
| 126 | # Test the value outside requests |
| 127 | port = '' |
| 128 | if self.scheme == 'http' and self.PORT != 80: |