mirror of
https://github.com/misskey-dev/media-proxy.git
synced 2025-04-29 02:47:26 +09:00
parent
5728bdd7aa
commit
495f655973
@ -61,6 +61,10 @@ export default {
|
||||
maxSize: 262144000,
|
||||
|
||||
// CORS
|
||||
// WARN:
|
||||
// 'Access-Control-Allow-Origin'を'*'に設定した場合、要求のOriginヘッダーを応答します。
|
||||
// (Misskeyのアバタークロップに必要なため)
|
||||
// Varyヘッダーが付加されるため、同じURLでもOriginごとに画像が生成されてしまうはずです。
|
||||
['Access-Control-Allow-Origin']: '*',
|
||||
['Access-Control-Allow-Headers']: '*',
|
||||
|
||||
|
@ -41,11 +41,20 @@ export function setMediaProxyConfig(setting) {
|
||||
}
|
||||
export default function (fastify, options, done) {
|
||||
setMediaProxyConfig(options);
|
||||
const corsOrigin = options['Access-Control-Allow-Origin'] ?? '*';
|
||||
const corsHeader = options['Access-Control-Allow-Headers'] ?? '*';
|
||||
const csp = options['Content-Security-Policy'] ?? `default-src 'none'; img-src 'self'; media-src 'self'; style-src 'unsafe-inline'`;
|
||||
fastify.addHook('onRequest', (request, reply, done) => {
|
||||
reply.header('Access-Control-Allow-Origin', options['Access-Control-Allow-Origin'] ?? '*');
|
||||
reply.header('Access-Control-Allow-Headers', options['Access-Control-Allow-Headers'] ?? '*');
|
||||
if (corsOrigin === '*') {
|
||||
reply.header('Access-Control-Allow-Origin', request.headers.origin ?? '*');
|
||||
reply.header('Vary', 'Origin');
|
||||
}
|
||||
else {
|
||||
reply.header('Access-Control-Allow-Origin', corsOrigin);
|
||||
}
|
||||
reply.header('Access-Control-Allow-Headers', corsHeader);
|
||||
reply.header('Access-Control-Allow-Methods', 'GET, OPTIONS');
|
||||
reply.header('Content-Security-Policy', options['Content-Security-Policy'] ?? `default-src 'none'; img-src 'self'; media-src 'self'; style-src 'unsafe-inline'`);
|
||||
reply.header('Content-Security-Policy', csp);
|
||||
done();
|
||||
});
|
||||
fastify.register(fastifyStatic, {
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "misskey-media-proxy",
|
||||
"version": "0.0.11",
|
||||
"version": "0.0.12",
|
||||
"description": "The Media Proxy for Misskey",
|
||||
"main": "built/index.js",
|
||||
"packageManager": "pnpm@7.26.0",
|
||||
|
15
src/index.ts
15
src/index.ts
@ -68,11 +68,20 @@ export function setMediaProxyConfig(setting?: MediaProxyOptions | null) {
|
||||
export default function (fastify: FastifyInstance, options: MediaProxyOptions | null | undefined, done: (err?: Error) => void) {
|
||||
setMediaProxyConfig(options);
|
||||
|
||||
const corsOrigin = options!['Access-Control-Allow-Origin'] ?? '*';
|
||||
const corsHeader = options!['Access-Control-Allow-Headers'] ?? '*';
|
||||
const csp = options!['Content-Security-Policy'] ?? `default-src 'none'; img-src 'self'; media-src 'self'; style-src 'unsafe-inline'`;
|
||||
|
||||
fastify.addHook('onRequest', (request, reply, done) => {
|
||||
reply.header('Access-Control-Allow-Origin', options!['Access-Control-Allow-Origin'] ?? '*');
|
||||
reply.header('Access-Control-Allow-Headers', options!['Access-Control-Allow-Headers'] ?? '*');
|
||||
if (corsOrigin === '*') {
|
||||
reply.header('Access-Control-Allow-Origin', request.headers.origin ?? '*');
|
||||
reply.header('Vary', 'Origin');
|
||||
} else {
|
||||
reply.header('Access-Control-Allow-Origin', corsOrigin);
|
||||
}
|
||||
reply.header('Access-Control-Allow-Headers', corsHeader);
|
||||
reply.header('Access-Control-Allow-Methods', 'GET, OPTIONS');
|
||||
reply.header('Content-Security-Policy', options!['Content-Security-Policy'] ?? `default-src 'none'; img-src 'self'; media-src 'self'; style-src 'unsafe-inline'`);
|
||||
reply.header('Content-Security-Policy', csp);
|
||||
done();
|
||||
});
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user