You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Setup a document type page, with an uid field and the following route resolver:
{type: 'page',path: '/:uid',}
Preview a page document with an uid containing unicode characters, like тест.
What is expected?
The тестpage document is previewed.
What is actually happening?
An error page is displayed, and Next.js logs the following error:
TypeError [ERR_INVALID_CHAR]: Invalid character in header content ["Location"]
at ServerResponse.setHeader (node:_http_outgoing:647:3)
at ServerResponse._res.setHeader ([REDACTED]/node_modules/next/dist/server/base-server.js:127:24)
at setHeadersFromObject ([REDACTED]/node_modules/next/dist/compiled/compression/index.js:46:680)
at ServerResponse.setWriteHeadHeaders ([REDACTED]/node_modules/next/dist/compiled/compression/index.js:46:914)
at ServerResponse.writeHead ([REDACTED]/node_modules/next/dist/compiled/compression/index.js:46:121)
at Object.redirect ([REDACTED]/node_modules/next/dist/server/api-utils/index.js:35:9)
at ServerResponse.apiRes.redirect ([REDACTED]/node_modules/next/dist/server/api-utils/node.js:351:59)
at redirectToPreviewURL (webpack-internal:///(api)/../node_modules/@prismicio/next/dist/redirectToPreviewURL.js:18:16)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async preview (webpack-internal:///(api)/./src/pages/api/preview.ts:30:9) {
code: 'ERR_INVALID_CHAR',
page: '/api/preview'
}
After some research the error is located within redirectToPreviewURL, with the underlying res.redirect call. This function tries to send a response with the Location header set with the redirection URL, but it seems that Node doesn't allow raw unicode characters in HTTP headers.
Forcing each path segment in the to be URL encoded solves the issue, this is my workaround:
This issue has been labeled as a bug since it was created using the 🚨 Bug Report Template.
Hi there, thank you so much for the report!
Following our Maintenance Process, we will review your bug report and get back to you next Wednesday. To ensure a smooth review of your issue and avoid unnecessary delays, please make sure your issue includes the following:
Information about your environment and packages you use (Node.js version, package names and their versions, etc.) Feel free to attach a copy of your package.json file.
Any troubleshooting steps you already went through
A minimal reproduction of the issue, and/or instructions on how to reproduce it
If you have identified the cause of the bug described in your report and know how to fix it, you're more than welcome to open a pull request address it. Check out our quick start guide for a simple contribution process.
If you think your issue is a question (not a bug) and would like quicker support, please close this issue and forward it to an appropriate section on our community forum: https://community.prismic.io
Versions
@prismicio/next
: 0.1.9next
: 12.3.4node
: 16.18.1Reproduction
page
, with anuid
field and the following route resolver:page
document with an uid containing unicode characters, likeтест
.What is expected?
The
тест
page
document is previewed.What is actually happening?
An error page is displayed, and Next.js logs the following error:
After some research the error is located within
redirectToPreviewURL
, with the underlyingres.redirect
call. This function tries to send a response with theLocation
header set with the redirection URL, but it seems that Node doesn't allow raw unicode characters in HTTP headers.Forcing each path segment in the to be URL encoded solves the issue, this is my workaround:
The text was updated successfully, but these errors were encountered: