Issue10063 - file:// scheme will stop accessing remote hosts via ftp protocol
This commit is contained in:
parent
6d7be5f86c
commit
383c32dd38
|
@ -1004,8 +1004,12 @@ FileHandler Objects
|
|||
.. method:: FileHandler.file_open(req)
|
||||
|
||||
Open the file locally, if there is no host name, or the host name is
|
||||
``'localhost'``. Change the protocol to ``ftp`` otherwise, and retry opening it
|
||||
using :attr:`parent`.
|
||||
``'localhost'``.
|
||||
|
||||
This method is applicable only for local hostnames. When a remote hostname
|
||||
is given, an :exc:`URLError` is raised.
|
||||
|
||||
.. versionchanged:: 3.2
|
||||
|
||||
|
||||
.. _ftp-handler-objects:
|
||||
|
|
|
@ -731,11 +731,11 @@ class HandlerTests(unittest.TestCase):
|
|||
# file:///blah.txt (a file)
|
||||
# file://ftp.example.com/blah.txt (an ftp URL)
|
||||
for url, ftp in [
|
||||
("file://ftp.example.com//foo.txt", True),
|
||||
("file://ftp.example.com//foo.txt", False),
|
||||
("file://ftp.example.com///foo.txt", False),
|
||||
# XXXX bug: fails with OSError, should be URLError
|
||||
("file://ftp.example.com/foo.txt", False),
|
||||
("file://somehost//foo/something.txt", True),
|
||||
("file://somehost//foo/something.txt", False),
|
||||
("file://localhost//foo/something.txt", False),
|
||||
]:
|
||||
req = Request(url)
|
||||
|
|
|
@ -1228,8 +1228,8 @@ class FileHandler(BaseHandler):
|
|||
url = req.selector
|
||||
if url[:2] == '//' and url[2:3] != '/' and (req.host and
|
||||
req.host != 'localhost'):
|
||||
req.type = 'ftp'
|
||||
return self.parent.open(req)
|
||||
if not req.host is self.get_names():
|
||||
raise URLError("file:// scheme is supported only on localhost")
|
||||
else:
|
||||
return self.open_local_file(req)
|
||||
|
||||
|
@ -1712,7 +1712,7 @@ class URLopener:
|
|||
if not isinstance(url, str):
|
||||
raise URLError('file error', 'proxy support for file protocol currently not implemented')
|
||||
if url[:2] == '//' and url[2:3] != '/' and url[2:12].lower() != 'localhost/':
|
||||
return self.open_ftp(url)
|
||||
raise ValueError("file:// scheme is supported only on localhost")
|
||||
else:
|
||||
return self.open_local_file(url)
|
||||
|
||||
|
|
|
@ -18,6 +18,12 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #Issue10063: file:// scheme will stop accessing remote hosts via ftp
|
||||
protocol. file:// urls had fallback to access remote hosts via ftp. This was
|
||||
not correct, change is made to raise a URLError when a remote host is tried
|
||||
to access via file:// scheme.
|
||||
|
||||
|
||||
- Issue #1710703: Write structures for an empty ZIP archive when a ZipFile is
|
||||
created in modes 'a' or 'w' and then closed without adding any files. Raise
|
||||
BadZipfile (rather than IOError) when opening small non-ZIP files.
|
||||
|
|
Loading…
Reference in New Issue