diff --git a/src/Network/FetchRequest.js b/src/Network/FetchRequest.js index 2f56ae8..09740cf 100644 --- a/src/Network/FetchRequest.js +++ b/src/Network/FetchRequest.js @@ -7,7 +7,8 @@ import { getFileName, now, toNum, - fileSize + fileSize, + isEmpty } from '../lib/util' export default class FetchRequest extends Emitter { @@ -19,6 +20,7 @@ export default class FetchRequest extends Emitter { this._url = fullUrl(url) this._id = uniqId('request') this._options = options + this._reqHeaders = options.headers || {} this._method = options.method || 'GET' } send(fetchResult) { @@ -38,9 +40,8 @@ export default class FetchRequest extends Emitter { res = res.clone() const type = getType(res.headers.get('Content-Type')) - res.text().then(resTxt => { - this.emit('update', this._id, { + const data = { type: type.type, subType: type.subType, time: now(), @@ -49,7 +50,11 @@ export default class FetchRequest extends Emitter { resHeaders: getHeaders(res), status: res.status, done: true - }) + } + if (!isEmpty(this._reqHeaders)) { + data.reqHeaders = this._reqHeaders + } + this.emit('update', this._id, data) }) return res diff --git a/src/Network/Network.js b/src/Network/Network.js index 8e4cd73..457ec75 100644 --- a/src/Network/Network.js +++ b/src/Network/Network.js @@ -79,16 +79,9 @@ export default class Network extends Tool { origSend.apply(this, arguments) } - winXhrProto.setRequestHeader = function() { + winXhrProto.setRequestHeader = function(key, val) { const req = this.erudaRequest - if (!req._headers) { - req._headers = {} - } - const key = arguments[0] - const val = arguments[1] - if (key && val) { - req._headers[key] = val - } + if (req) req.handleReqHeadersSet(key, val) origSetRequestHeader.apply(this, arguments) } @@ -137,8 +130,6 @@ export default class Network extends Tool { method: 'GET', startTime: now(), time: 0, - resHeaders: {}, - reqHeaders: {}, resTxt: '', done: false }) @@ -175,15 +166,7 @@ export default class Network extends Tool { if (!data.done) return - showSources('http', { - url: data.url, - data: data.data, - resTxt: data.resTxt, - type: data.type, - subType: data.subType, - resHeaders: data.resHeaders, - reqHeaders: data.reqHeaders - }) + showSources('http', data) }) .on('click', '.eruda-clear-request', () => this.clear()) diff --git a/src/Network/XhrRequest.js b/src/Network/XhrRequest.js index 5653935..49ffc90 100644 --- a/src/Network/XhrRequest.js +++ b/src/Network/XhrRequest.js @@ -10,7 +10,8 @@ import { trim, isCrossOrig, toNum, - fileSize + fileSize, + isEmpty } from '../lib/util' export default class XhrRequest extends Emitter { @@ -18,6 +19,7 @@ export default class XhrRequest extends Emitter { super() this._xhr = xhr + this._reqHeaders = {} this._method = method this._url = fullUrl(url) this._id = uniqId('request') @@ -25,25 +27,32 @@ export default class XhrRequest extends Emitter { handleSend(data) { if (!isStr(data)) data = '' - this.emit('send', this._id, { + data = { name: getFileName(this._url), url: this._url, data, method: this._method - }) + } + if (!isEmpty(this._reqHeaders)) { + data.reqHeaders = this._reqHeaders + } + this.emit('send', this._id, data) + } + handleReqHeadersSet(key, val) { + if (key && val) { + this._reqHeaders[key] = val + } } handleHeadersReceived() { const xhr = this._xhr const type = getType(xhr.getResponseHeader('Content-Type')) - this.emit('update', this._id, { type: type.type, subType: type.subType, size: getSize(xhr, true, this._url), time: now(), - resHeaders: getHeaders(xhr), - reqHeaders: (xhr.erudaRequest && xhr.erudaRequest._headers) || null + resHeaders: getHeaders(xhr) }) } handleDone() {