protected override void GetResponseHeaders(CefResponse response, out long responseLength, out string redirectUrl) { var statusCode = _resourceResponse?.HttpStatus ?? System.Net.HttpStatusCode.BadRequest; if (_resourceResponse != null) { response.SetHeaderMap(_resourceResponse.Headers); } response.Status = (int)statusCode; redirectUrl = null; if (statusCode == System.Net.HttpStatusCode.OK) { responseLength = _resourceResponse.Length; response.MimeType = _resourceResponse.MimeType; if (_isPartContent) { response.SetHeaderByName("Accept-Ranges", "bytes", true); var startPos = 0; var endPos = _resourceResponse.Length - 1; if (_buffStartPostition.HasValue && _buffEndPostition.HasValue) { startPos = _buffStartPostition.Value; endPos = _buffStartPostition.Value; } else if (!_buffEndPostition.HasValue && _buffStartPostition.HasValue) { startPos = _buffStartPostition.Value; } response.SetHeaderByName("Content-Range", $"bytes {startPos}-{endPos}/{_resourceResponse.Length}", true); response.SetHeaderByName("Content-Length", $"{endPos - startPos + 1}", true); response.Status = 206; Logger.Verbose($"[Content-Range]: {startPos}-{endPos}/{_resourceResponse.Length}"); } response.SetHeaderByName("Content-Type", response.MimeType, true); response.SetHeaderByName(X_POWERED_BY, $"NanUI/{System.Reflection.Assembly.GetExecutingAssembly().GetName().Version}", true); } else { responseLength = 0; } }