Skip to content

Commit 4a52bfd

Browse files
TheAlexLichterpi0
authored andcommitted
fix: correctly ignore brotli encoding on server-side (#180)
1 parent ceabf1f commit 4a52bfd

File tree

3 files changed

+39
-19
lines changed

3 files changed

+39
-19
lines changed

lib/plugin.template.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -168,10 +168,6 @@ export default (ctx, inject) => {
168168
patch: {}
169169
}
170170

171-
if (process.server) {
172-
headers.common['Accept-Encoding'] = 'gzip, deflate'
173-
}
174-
175171
const axiosOptions = {
176172
baseURL,
177173
headers
@@ -183,6 +179,11 @@ export default (ctx, inject) => {
183179
<% for (let h of options.proxyHeadersIgnore) { %>delete axiosOptions.headers.common['<%= h %>']
184180
<% } %><% } %>
185181

182+
if (process.server) {
183+
// Don't accept brotli encoding because Node can't parse it
184+
axiosOptions.headers.common['Accept-Encoding'] = 'gzip, deflate'
185+
}
186+
186187
// Create new axios instance
187188
const axios = Axios.create(axiosOptions)
188189

test/axios.test.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,17 @@ describe('axios module', () => {
7676
expect(d).not.toBeNull()
7777
expect(b).not.toBe(d)
7878
})
79+
80+
test('ssr no brotli', async () => {
81+
const makeReq = login =>
82+
axios
83+
.get(url('/ssr' + (login ? '?login' : '')))
84+
.then(r => r.data)
85+
.then(h => /encoding-\$(.*)\$/.exec(h))
86+
.then(m => (m && m[1] ? m[1] : null))
87+
88+
const result = await makeReq()
89+
90+
expect(result).toBe('gzip, deflate')
91+
})
7992
})

test/fixture/pages/ssr.vue

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,28 @@
11
<template>
2-
<div>session-{{ axiosSessionId }}</div>
2+
<div>
3+
<div>session-{{ axiosSessionId }}</div>
4+
<div>encoding-${{ axiosEncoding }}$</div>
5+
</div>
36
</template>
47

58
<script>
6-
// This will be intentially shared across requests
7-
let reqCtr = 1
9+
// This will be intentically shared across requests
10+
let reqCtr = 1
811
9-
export default {
10-
async fetch ({ app, route }) {
11-
let doLogin = route.query.login !== undefined
12-
if (doLogin) {
13-
app.$axios.setHeader('sessionId', reqCtr++)
14-
}
15-
},
16-
computed: {
17-
axiosSessionId () {
18-
return this.$axios.defaults.headers.common.sessionId
12+
export default {
13+
async fetch ({app, route}) {
14+
let doLogin = route.query.login !== undefined
15+
if (doLogin) {
16+
app.$axios.setHeader('sessionId', reqCtr++)
17+
}
18+
},
19+
computed: {
20+
axiosSessionId () {
21+
return this.$axios.defaults.headers.common.sessionId
22+
},
23+
axiosEncoding () {
24+
return this.$axios.defaults.headers.common['Accept-Encoding']
25+
}
1926
}
2027
}
21-
}
22-
</script>
28+
</script>

0 commit comments

Comments
 (0)