This returns true 200
using Bun or workerd (cloudflare) runtime
It’s also fine using curl or browser (this is just the link to an archive on gitlab)
curl -X GET -v https://gitlab.com/gitlab-com/content-sites/handbook/-/archive/main/handbook-main.zip --output zip.zip
However, in vercel it returns 406 Unacceptable
export const GET = async () => {
const url =
"https://gitlab.com/gitlab-com/content-sites/handbook/-/archive/main/handbook-main.zip?random=" +
Math.random();
console.log({ url });
const response = await fetch(url)
.then(async (res) => {
if (!res.ok) {
const text = await res.text();
console.log(res.ok, res.status, { text });
}
res.headers.forEach((value, key) => console.log({ key, value }));
console.log(res.ok, res.status);
})
.catch((error) => {
console.log("Error:", error);
// Also try to get the response details if available
if (error instanceof Response) {
error.text().then((text) => console.log("Error response:", text));
}
});
return new Response("OK?");
};
// export default {
// fetch: GET,
// };
I tried adding many headers to make the request look the same, but in the end I keep getting ‘406 Unacceptable’ for Vercel.
Edit: even when providing a private access token for gitlabs api it returns 406 in vercel when ran as API endpoint. Bun/CloudFlare are totally fine.
I don’t know if this is the right place to report this, but I found this behaviour very strange and only occur with the vercel runtime. My guess is that GitLab may block Vercel’s IP range, but that would be a weird thing to do, especially considering I also tried it with access token, so it might be a bug on Vercel’s side?
Hope someone can shine some light on why this might be happening.