Add X-Forwarded-Proto support

This commit is contained in:
2023-07-01 08:30:28 +08:00
parent f636262cf8
commit 71f5516c2c
4 changed files with 12 additions and 3 deletions

View File

@@ -1,6 +1,7 @@
import { Handlers } from "$fresh/server.ts";
import { get_task_manager } from "../../../server.ts";
import { parse_bool } from "../../../server/parse_form.ts";
import { get_host } from "../../../server/utils.ts";
export const handler: Handlers = {
async GET(req, _ctx) {
@@ -12,6 +13,6 @@ export const handler: Handlers = {
const f = m.db.get_random_file(is_nsfw, is_ad);
if (!f) return new Response("File not found.", { status: 404 });
const t = thumb ? "thumbnail" : "file";
return Response.redirect(`${u.origin}/api/${t}/${f.id}`);
return Response.redirect(`${get_host(req)}/api/${t}/${f.id}`);
},
};

View File

@@ -10,6 +10,7 @@ import {
get_file_response,
GetFileResponseOptions,
} from "../../../server/get_file_response.ts";
import { get_host } from "../../../server/utils.ts";
export const handler: Handlers = {
async GET(req, ctx) {
@@ -52,7 +53,7 @@ export const handler: Handlers = {
}
if (!force) {
if (cfg.width > f.width || cfg.height > f.height) {
return Response.redirect(`${u.origin}/api/file/${f.id}`);
return Response.redirect(`${get_host(req)}/api/file/${f.id}`);
}
}
const output = generate_filename(b, f, cfg);

View File

@@ -3,6 +3,7 @@ import { parse } from "std/jsonc/mod.ts";
import { join } from "std/path/mod.ts";
import { I18NMap } from "./i18n.ts";
import { pick } from "accept-language-parser/";
import { get_host } from "./utils.ts";
const whole_maps = new Map<string, I18NMap>();
const LANGUAGES = ["zh-cn"];
@@ -67,6 +68,6 @@ export function i18n_handle_request(req: Request) {
params.append(p[0], p[1]);
}
}
return Response.redirect(`${u.origin}${u.pathname}?${params}`);
return Response.redirect(`${get_host(req)}${u.pathname}?${params}`);
}
}

View File

@@ -40,3 +40,9 @@ export function return_json<T = unknown>(data: T, status = 200) {
headers: { "Content-Type": "application/json" },
});
}
export function get_host(req: Request) {
const u = new URL(req.url);
const proto = req.headers.get("X-Forwarded-Proto");
return proto ? `${proto}://${u.host}` : u.origin;
}