File size: 1,057 Bytes
96e6ae0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | import express from "express";
import fetch from "node-fetch";
const router = express.Router();
// GET /api/img?u=<encoded image url> -> يعيد الصورة من نفس الأصل (يحل CORS للـ canvas)
router.get("/img", async (req, res) => {
try {
const u = req.query.u;
if (!u) return res.status(400).send("missing url");
const url = decodeURIComponent(u);
if (!/^https?:\/\//i.test(url)) return res.status(400).send("bad url");
const r = await fetch(url, {
headers: { "User-Agent": "Mozilla/5.0", Accept: "image/*" },
});
if (!r.ok) return res.status(502).send("fetch failed");
const type = r.headers.get("content-type") || "image/jpeg";
res.setHeader("Content-Type", type);
res.setHeader("Cache-Control", "public, max-age=86400");
res.setHeader("Access-Control-Allow-Origin", "*");
const buf = Buffer.from(await r.arrayBuffer());
res.send(buf);
} catch (err) {
console.error("img proxy error:", err);
res.status(500).send("proxy error");
}
});
export default router;
|