Open justwdh opened 3 years ago
fix cannot support play mp4 static file in safari browser.
remi/server.py -> App -> _process_all
before
filename = self._get_static_file(static_file.groups()[0]) if not filename: self.send_response(404) return mimetype, encoding = mimetypes.guess_type(filename) self.send_response(200) self.send_header('Content-type', mimetype if mimetype else 'application/octet-stream') if self.server.enable_file_cache: self.send_header('Cache-Control', 'public, max-age=86400') self.end_headers() with open(filename, 'rb') as f: content = f.read() self.wfile.write(content)
after
filename = self._get_static_file(static_file.groups()[0]) if not filename: self.send_response(404) return mimetype, encoding = mimetypes.guess_type(filename) response_code = 200 content = None send_response_code = None with open(filename, 'rb') as f: content = f.read() for k in self.headers: if k.lower() == 'range': self._log.info('Start resumable pass.') # self._log.info(self.headers) range_value = self.headers[k] range_value_comp = re.compile(r'bytes=([0-9]+)\-(([0-9]+)?)') m = re.match(range_value_comp, range_value) if m: start_range = m.group(1) start = int(start_range) end_range = m.group(2) if len(end_range) > 0: end = int(end_range) else: end = -1 print(start, end_range, len(content)) if end == len(content) -1: response_code = 200 else: response_code = 206 self.send_response(response_code) send_response_code = True if end == -1: # headers['Content-Length'] = str(len(content) - start) self.send_header('Content-Length', str(len(content) - start)) else: # headers['Content-Length'] = str(end - start + 1 self.send_header('Content-Length', str(end - start + 1)) if end < 0: content_range_header_value = "bytes %d-%d/%d" % (start, len(content) - 1, len(content)) content = content[start:len(content)] else: content_range_header_value = "bytes %d-%d/%d" % (start, end, len(content)) content = content[start:end + 1] # headers['Content-Range'] = content_range_header_value self.send_header('Content-Range', content_range_header_value) if not send_response_code: self.send_response(response_code) self.send_header('Content-type', mimetype if mimetype else 'application/octet-stream') if self.server.enable_file_cache: self.send_header('Cache-Control', 'public, max-age=86400') self.end_headers() if content: self.wfile.write(content)
Thank you, I will study and embed this ;-)
fix cannot support play mp4 static file in safari browser.
before
after