summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEltrac <eltrac233@gmail.com>2024-11-25 22:10:07 +0800
committerEltrac <eltrac233@gmail.com>2024-11-25 22:10:07 +0800
commit66853c1c77daf043f5a56b7fdcf28ce655cac867 (patch)
treea2c9a336f6185d2ddec58a530a9b245408a44654
parent5c60cbd822a128be9bd6d6158a8a158cabcc08b9 (diff)
fix: 500 error caused by non-ASCII in HTTP headers
-rw-r--r--api/headers.js13
-rw-r--r--vercel.json20
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