【HeadFirst】第七章:web开发[本地localhost访问][自动访问index.html]

来源:互联网 发布:学编程怎么开始学 编辑:程序博客网 时间:2024/05/22 10:58


在浏览器中输入:http://localhost:8080

而不是https://localhost:8080,会出现报错


启动simple_httpd.py,访问上述网址,为什么会自动访问到index.html?而不是其他py文件?

# coding=gbk'''提供一个支持CGI的web服务器'''from http.server import HTTPServer, CGIHTTPRequestHandlerport = 8080httpd = HTTPServer(('', port), CGIHTTPRequestHandler)print("Starting simple_httpd on port: " + str(httpd.server_port))httpd.serve_forever()

看源代码:

\Python 3.5\Lib\http\server.py

    def send_head(self):        """Common code for GET and HEAD commands.        This sends the response code and MIME headers.        Return value is either a file object (which has to be copied        to the outputfile by the caller unless the command was HEAD,        and must be closed by the caller under all circumstances), or        None, in which case the caller has nothing further to do.        """        path = self.translate_path(self.path)        f = None        if os.path.isdir(path):            parts = urllib.parse.urlsplit(self.path)            if not parts.path.endswith('/'):                # redirect browser - doing basically what apache does                self.send_response(HTTPStatus.MOVED_PERMANENTLY)                new_parts = (parts[0], parts[1], parts[2] + '/',                             parts[3], parts[4])                new_url = urllib.parse.urlunsplit(new_parts)                self.send_header("Location", new_url)                self.end_headers()                return None            for index in "index.html", "index.htm":#================== 此处 ===================                index = os.path.join(path, index)                if os.path.exists(index):                    path = index                    break            else:#=============== 奇怪的缩进 位置相对于上面的for和两个if=================                return self.list_directory(path)        ctype = self.guess_type(path)        try:            f = open(path, 'rb')        except OSError:            self.send_error(HTTPStatus.NOT_FOUND, "File not found")            return None        try:            self.send_response(HTTPStatus.OK)            self.send_header("Content-type", ctype)            fs = os.fstat(f.fileno())            self.send_header("Content-Length", str(fs[6]))            self.send_header("Last-Modified", self.date_time_string(fs.st_mtime))            self.end_headers()            return f        except:            f.close()            raise




0 0
原创粉丝点击