feat(network): fetch request headers

This commit is contained in:
surunzi
2019-09-27 18:10:04 +08:00
parent 9fec5dda3c
commit cb2855405b
3 changed files with 27 additions and 30 deletions

View File

@@ -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

View File

@@ -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())

View File

@@ -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() {