-
Notifications
You must be signed in to change notification settings - Fork 27.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix Invalid character in header ["Content-Disposition"] #30287
Conversation
Hi, could some reviewer kindly have a look? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
Lets add a test for the invalid character so we know that this fixes it 👍
For example:
next.js/test/integration/image-optimizer/test/index.test.js
Lines 65 to 69 in 8d82d76
it('should handle non-ascii characters in image url', async () => { | |
const query = { w, q: 90, url: '/äöü.png' } | |
const res = await fetchViaHTTP(appPort, '/_next/image', query, {}) | |
expect(res.status).toBe(200) | |
}) |
packages/next/package.json
Outdated
@@ -81,6 +81,7 @@ | |||
"chalk": "2.4.2", | |||
"chokidar": "3.5.1", | |||
"constants-browserify": "1.0.0", | |||
"content-disposition": "0.5.3", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we ncc
this and move it to devDependencies
? Here's an example package being ncc'd
next.js/packages/next/taskfile.js
Lines 51 to 60 in 8d82d76
// eslint-disable-next-line camelcase | |
externals['amphtml-validator'] = 'next/dist/compiled/amphtml-validator' | |
export async function ncc_amphtml_validator(task, opts) { | |
await task | |
.source( | |
opts.src || relative(__dirname, require.resolve('amphtml-validator')) | |
) | |
.ncc({ packageName: 'amphtml-validator', externals }) | |
.target('compiled/amphtml-validator') | |
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Moved to devDependencies
and added to ncc
I have updated tests with updated image name. |
@styfle Could you please take a look? |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
@styfle That looks like the failing Jest tests and build are irrelevant to this PR (they were ok before). Could you please rerun the tests? (Maybe pulling latest canary is a right idea?) |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
@styfle For unknow reasons one test failed because of me (i do not know how), but the second one was not my fault. Could you please re-run everything? (Auto-build on Azure failed again...) |
This comment has been minimized.
This comment has been minimized.
Failing test suitesCommit: 700f0f1 test/integration/image-component/unicode/test/index.test.js
Expand output● Image Component Unicode Image URL › dev mode › should load static unicode image
● Image Component Unicode Image URL › dev mode › should load internal unicode image
● Image Component Unicode Image URL › dev mode › should load external unicode image
● Image Component Unicode Image URL › server mode › should load static unicode image
● Image Component Unicode Image URL › server mode › should load internal unicode image
● Image Component Unicode Image URL › server mode › should load external unicode image
|
@styfle I have run the tests successfully, accidentally added a letter (which caused tests to fail, but I did not notice until |
Stats from current PRDefault Build (Increase detected
|
vercel/next.js canary | ihmpavel/next.js image-content-disposition | Change | |
---|---|---|---|
buildDuration | 18.1s | 18.1s | |
buildDurationCached | 3.9s | 3.8s | -32ms |
nodeModulesSize | 293 MB | 293 MB |
Page Load Tests Overall increase ✓
vercel/next.js canary | ihmpavel/next.js image-content-disposition | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 2.872 | 2.883 | |
/ avg req/sec | 870.48 | 867.03 | |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.399 | 1.343 | -0.06 |
/error-in-render avg req/sec | 1787.28 | 1860.93 | +73.65 |
Client Bundles (main, webpack, commons)
vercel/next.js canary | ihmpavel/next.js image-content-disposition | Change | |
---|---|---|---|
450.HASH.js gzip | 179 B | 179 B | ✓ |
framework-HASH.js gzip | 42.2 kB | 42.2 kB | ✓ |
main-HASH.js gzip | 28 kB | 28 kB | ✓ |
webpack-HASH.js gzip | 1.45 kB | 1.45 kB | ✓ |
Overall change | 71.9 kB | 71.9 kB | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | ihmpavel/next.js image-content-disposition | Change | |
---|---|---|---|
polyfills-a4..dd70.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | ihmpavel/next.js image-content-disposition | Change | |
---|---|---|---|
_app-HASH.js gzip | 1.23 kB | 1.23 kB | ✓ |
_error-HASH.js gzip | 194 B | 194 B | ✓ |
amp-HASH.js gzip | 312 B | 312 B | ✓ |
css-HASH.js gzip | 327 B | 327 B | ✓ |
dynamic-HASH.js gzip | 2.38 kB | 2.38 kB | ✓ |
head-HASH.js gzip | 350 B | 350 B | ✓ |
hooks-HASH.js gzip | 635 B | 635 B | ✓ |
image-HASH.js gzip | 4.44 kB | 4.44 kB | ✓ |
index-HASH.js gzip | 263 B | 263 B | ✓ |
link-HASH.js gzip | 1.87 kB | 1.87 kB | ✓ |
routerDirect..HASH.js gzip | 321 B | 321 B | ✓ |
script-HASH.js gzip | 383 B | 383 B | ✓ |
withRouter-HASH.js gzip | 318 B | 318 B | ✓ |
334f979574ae..6f4.css gzip | 106 B | 106 B | ✓ |
Overall change | 13.1 kB | 13.1 kB | ✓ |
Client Build Manifests
vercel/next.js canary | ihmpavel/next.js image-content-disposition | Change | |
---|---|---|---|
_buildManifest.js gzip | 459 B | 459 B | ✓ |
Overall change | 459 B | 459 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | ihmpavel/next.js image-content-disposition | Change | |
---|---|---|---|
index.html gzip | 534 B | 534 B | ✓ |
link.html gzip | 547 B | 547 B | ✓ |
withRouter.html gzip | 527 B | 527 B | ✓ |
Overall change | 1.61 kB | 1.61 kB | ✓ |
Default Build with SWC (Decrease detected ✓)
General Overall increase ⚠️
vercel/next.js canary | ihmpavel/next.js image-content-disposition | Change | |
---|---|---|---|
buildDuration | 19.6s | 19.5s | -103ms |
buildDurationCached | 3.8s | 3.9s | |
nodeModulesSize | 293 MB | 293 MB |
Page Load Tests Overall decrease ⚠️
vercel/next.js canary | ihmpavel/next.js image-content-disposition | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 2.86 | 2.827 | -0.03 |
/ avg req/sec | 874.13 | 884.34 | +10.21 |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.347 | 1.356 | |
/error-in-render avg req/sec | 1856 | 1843.86 |
Client Bundles (main, webpack, commons)
vercel/next.js canary | ihmpavel/next.js image-content-disposition | Change | |
---|---|---|---|
450.HASH.js gzip | 179 B | 179 B | ✓ |
framework-HASH.js gzip | 42.3 kB | 42.3 kB | ✓ |
main-HASH.js gzip | 28.2 kB | 28.2 kB | ✓ |
webpack-HASH.js gzip | 1.43 kB | 1.43 kB | ✓ |
Overall change | 72.1 kB | 72.1 kB | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | ihmpavel/next.js image-content-disposition | Change | |
---|---|---|---|
polyfills-a4..dd70.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | ihmpavel/next.js image-content-disposition | Change | |
---|---|---|---|
_app-HASH.js gzip | 1.22 kB | 1.22 kB | ✓ |
_error-HASH.js gzip | 180 B | 180 B | ✓ |
amp-HASH.js gzip | 305 B | 305 B | ✓ |
css-HASH.js gzip | 321 B | 321 B | ✓ |
dynamic-HASH.js gzip | 2.38 kB | 2.38 kB | ✓ |
head-HASH.js gzip | 342 B | 342 B | ✓ |
hooks-HASH.js gzip | 622 B | 622 B | ✓ |
image-HASH.js gzip | 4.46 kB | 4.46 kB | ✓ |
index-HASH.js gzip | 256 B | 256 B | ✓ |
link-HASH.js gzip | 1.91 kB | 1.91 kB | ✓ |
routerDirect..HASH.js gzip | 314 B | 314 B | ✓ |
script-HASH.js gzip | 375 B | 375 B | ✓ |
withRouter-HASH.js gzip | 309 B | 309 B | ✓ |
334f979574ae..6f4.css gzip | 106 B | 106 B | ✓ |
Overall change | 13.1 kB | 13.1 kB | ✓ |
Client Build Manifests
vercel/next.js canary | ihmpavel/next.js image-content-disposition | Change | |
---|---|---|---|
_buildManifest.js gzip | 460 B | 460 B | ✓ |
Overall change | 460 B | 460 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | ihmpavel/next.js image-content-disposition | Change | |
---|---|---|---|
index.html gzip | 535 B | 535 B | ✓ |
link.html gzip | 548 B | 548 B | ✓ |
withRouter.html gzip | 529 B | 529 B | ✓ |
Overall change | 1.61 kB | 1.61 kB | ✓ |
@styfle Can be merged? 🤩 |
…ercel#30287) * Image content disposition * Add tests * Fixed import * Add TS types * Revert readme.md * Alphabet sorting * Compile `content-disposition` * Rename for tests * Fix test * Fix accidentally added letter Co-authored-by: Steven <steven@ceriously.com>
Bug