diff options
| author | Eltrac <eltrac233@gmail.com> | 2024-11-25 22:10:07 +0800 |
|---|---|---|
| committer | Eltrac <eltrac233@gmail.com> | 2024-11-25 22:10:07 +0800 |
| commit | 66853c1c77daf043f5a56b7fdcf28ce655cac867 (patch) | |
| tree | a2c9a336f6185d2ddec58a530a9b245408a44654 | |
| parent | 5c60cbd822a128be9bd6d6158a8a158cabcc08b9 (diff) | |
fix: 500 error caused by non-ASCII in HTTP headers
| -rw-r--r-- | api/headers.js | 13 | ||||
| -rw-r--r-- | vercel.json | 20 |
2 files changed, 33 insertions, 0 deletions
diff --git a/api/headers.js b/api/headers.js new file mode 100644 index 00000000..9cbf6ac3 --- /dev/null +++ b/api/headers.js @@ -0,0 +1,13 @@ +// headers.js +export default (req, res) => { + const headers = res.headers(); + for (const key in headers) { + const value = headers[key]; + if (typeof value === 'string') { + headers[key] = value.replace(/[^\x00-\x7F]/g, (char) => { + return `%${char.charCodeAt(0).toString(16).toUpperCase()}`; + }); + } + } + return res; + };
\ No newline at end of file diff --git a/vercel.json b/vercel.json new file mode 100644 index 00000000..64a090ca --- /dev/null +++ b/vercel.json @@ -0,0 +1,20 @@ +{ + "version": 2, + "functions": { + "api/headers.js": { + "runtime": "nodejs14.x", + "includeFiles": "api/headers.js" + } + }, + "headers": [ + { + "source": "/(.*)", + "headers": [ + { + "key": "X-Headers-Source", + "value": "headers.js" + } + ] + } + ] + }
\ No newline at end of file |
