Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c09a871543 | |||
| 856a572341 | |||
| 4175a65117 | |||
| e2bfae151c | |||
| 8eab4b3e5f | |||
| 46923f37d9 | |||
| 2771d95bde | |||
| 7c2e61fac0 |
+4
-2
@@ -81,8 +81,10 @@ ClientRequest.prototype.setHeader = function (name, value) {
|
||||
}
|
||||
|
||||
ClientRequest.prototype.getHeader = function (name) {
|
||||
var self = this
|
||||
return self._headers[name.toLowerCase()].value
|
||||
var header = this._headers[name.toLowerCase()]
|
||||
if (header)
|
||||
return header.value
|
||||
return null
|
||||
}
|
||||
|
||||
ClientRequest.prototype.removeHeader = function (name) {
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "stream-http",
|
||||
"version": "2.7.0",
|
||||
"version": "2.7.2",
|
||||
"description": "Streaming http in the browser",
|
||||
"main": "index.js",
|
||||
"repository": {
|
||||
@@ -36,7 +36,7 @@
|
||||
"devDependencies": {
|
||||
"basic-auth": "^1.0.3",
|
||||
"brfs": "^1.4.0",
|
||||
"cookie-parser": "^1.3.5",
|
||||
"cookie-parser": "^1.4.3",
|
||||
"express": "^4.15.2",
|
||||
"tape": "^4.0.0",
|
||||
"ua-parser-js": "^0.7.7",
|
||||
|
||||
+12
-6
@@ -90,20 +90,26 @@ test('content-type response header', function (t) {
|
||||
var browser = (new UAParser()).setUA(navigator.userAgent).getBrowser()
|
||||
var browserName = browser.name
|
||||
var browserVersion = browser.major
|
||||
var browserMinorVersion = browser.minor
|
||||
var browserMinorVersion = browser.minor || 0
|
||||
// The content-type header is broken when 'prefer-streaming' or 'allow-wrong-content-type'
|
||||
// is passed in browsers that rely on xhr.overrideMimeType(), namely older chrome and safari 6-10.0
|
||||
// is passed in browsers that rely on xhr.overrideMimeType(), namely older chrome, safari 6-10.0, and the stock Android browser
|
||||
// Note that Safari 10.0 on iOS 10.3 doesn't need to override the mime type, so the content-type is preserved.
|
||||
var wrongMimeType = ((browserName === 'Chrome' && browserVersion <= 42) ||
|
||||
((browserName === 'Safari' || browserName === 'Mobile Safari') && browserVersion >= 6 && (browserVersion < 10 || (browserVersion === 10 && browserMinorVersion === 0))))
|
||||
((browserName === 'Safari' || browserName === 'Mobile Safari') && browserVersion >= 6 && (browserVersion < 10 || (browserVersion == 10 && browserMinorVersion == 0)))
|
||||
|| (browserName === 'Android Browser'))
|
||||
|
||||
test('content-type response header with forced streaming', function (t) {
|
||||
http.get({
|
||||
path: '/testHeaders',
|
||||
mode: 'prefer-streaming'
|
||||
}, function (res) {
|
||||
if (wrongMimeType)
|
||||
t.equal(res.headers['content-type'], 'text/plain; charset=x-user-defined', 'content-type overridden')
|
||||
else
|
||||
if (wrongMimeType) {
|
||||
// allow both the 'wrong' and correct mime type, since sometimes it's impossible to tell which to expect
|
||||
// from the browser version alone (e.g. Safari 10.0 on iOS 10.2 vs iOS 10.3)
|
||||
var contentType = res.headers['content-type']
|
||||
var correct = (contentType === 'text/plain; charset=x-user-defined') || (contentType === 'application/json')
|
||||
t.ok(correct, 'content-type either preserved or overridden')
|
||||
} else
|
||||
t.equal(res.headers['content-type'], 'application/json', 'content-type preserved')
|
||||
t.end()
|
||||
})
|
||||
|
||||
@@ -32,6 +32,7 @@ app.get('/testHeaders', function (req, res) {
|
||||
})
|
||||
|
||||
res.setHeader('Content-Type', 'application/json')
|
||||
res.setHeader('Cache-Control', 'no-cache')
|
||||
|
||||
// Request headers are sent in the body as json
|
||||
var reqHeaders = {}
|
||||
|
||||
Reference in New Issue
Block a user