1
0
Fork 0
mirror of https://github.com/terribleplan/next.js.git synced 2024-01-19 02:48:18 +00:00

Make sure the /static working properly. (#2675)

This commit is contained in:
Arunoda Susiripala 2017-07-28 18:33:39 +05:30 committed by GitHub
parent 23444fc74e
commit 5ce4f432cd
3 changed files with 22 additions and 2 deletions

View file

@ -171,12 +171,20 @@ export default class Server {
await renderScript(req, res, page, this.renderOpts)
},
'/_next/:path?': async (req, res, params) => {
// It's very important keep this route's param optional.
// (but it should support as many as params, seperated by '/')
// Othewise this will lead to a pretty simple DOS attack.
// See more: https://github.com/zeit/next.js/issues/2617
'/_next/:path*': async (req, res, params) => {
const p = join(__dirname, '..', 'client', ...(params.path || []))
await this.serveStatic(req, res, p)
},
'/static/:path?': async (req, res, params) => {
// It's very important keep this route's param optional.
// (but it should support as many as params, seperated by '/')
// Othewise this will lead to a pretty simple DOS attack.
// See more: https://github.com/zeit/next.js/issues/2617
'/static/:path*': async (req, res, params) => {
const p = join(this.dir, 'static', ...(params.path || []))
await this.serveStatic(req, res, p)
}

View file

@ -0,0 +1 @@
item

View file

@ -77,4 +77,15 @@ describe('Production Usage', () => {
browser.close()
})
})
describe('Misc', () => {
it('should allow to access /static/ and /_next/', async () => {
// This is a test case which prevent the following issue happening again.
// See: https://github.com/zeit/next.js/issues/2617
await renderViaHTTP(appPort, '/_next/')
await renderViaHTTP(appPort, '/static/')
const data = await renderViaHTTP(appPort, '/static/data/item.txt')
expect(data).toBe('item')
})
})
})