[backend] Send CORS headers for WellKnownController and NodeInfoController

This commit is contained in:
Laura Hausmann 2024-02-11 20:37:34 +01:00
parent 924153c809
commit 97df7ea5e6
No known key found for this signature in database
GPG key ID: D044E84C5BE01605
3 changed files with 10 additions and 0 deletions

View file

@ -1,5 +1,6 @@
using Iceshrimp.Backend.Core.Configuration; using Iceshrimp.Backend.Core.Configuration;
using Iceshrimp.Backend.Core.Federation.WebFinger; using Iceshrimp.Backend.Core.Federation.WebFinger;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
@ -8,6 +9,7 @@ namespace Iceshrimp.Backend.Controllers;
[ApiController] [ApiController]
[Tags("Federation")] [Tags("Federation")]
[Route("/nodeinfo")] [Route("/nodeinfo")]
[EnableCors("well-known")]
public class NodeInfoController(IOptions<Config.InstanceSection> config) : Controller { public class NodeInfoController(IOptions<Config.InstanceSection> config) : Controller {
[HttpGet("2.1")] [HttpGet("2.1")]
[HttpGet("2.0")] [HttpGet("2.0")]

View file

@ -3,6 +3,7 @@ using Iceshrimp.Backend.Core.Configuration;
using Iceshrimp.Backend.Core.Database; using Iceshrimp.Backend.Core.Database;
using Iceshrimp.Backend.Core.Database.Tables; using Iceshrimp.Backend.Core.Database.Tables;
using Iceshrimp.Backend.Core.Federation.WebFinger; using Iceshrimp.Backend.Core.Federation.WebFinger;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
@ -12,6 +13,7 @@ namespace Iceshrimp.Backend.Controllers;
[ApiController] [ApiController]
[Tags("Federation")] [Tags("Federation")]
[Route("/.well-known")] [Route("/.well-known")]
[EnableCors("well-known")]
public class WellKnownController(IOptions<Config.InstanceSection> config, DatabaseContext db) : Controller { public class WellKnownController(IOptions<Config.InstanceSection> config, DatabaseContext db) : Controller {
[HttpGet("webfinger")] [HttpGet("webfinger")]
[Produces("application/json")] [Produces("application/json")]

View file

@ -171,6 +171,12 @@ public static class ServiceExtensions {
public static void AddCorsPolicies(this IServiceCollection services) { public static void AddCorsPolicies(this IServiceCollection services) {
services.AddCors(options => { services.AddCors(options => {
options.AddPolicy("well-known", policy => {
policy.WithOrigins("*")
.WithMethods("GET")
.WithHeaders("Accept")
.WithExposedHeaders("Vary");
});
options.AddPolicy("drive", policy => { options.AddPolicy("drive", policy => {
policy.WithOrigins("*") policy.WithOrigins("*")
.WithMethods("GET", "HEAD"); .WithMethods("GET", "HEAD");