Add CORS support

This commit is contained in:
2024-08-18 21:34:57 +01:00
parent d2bbd4b135
commit 22adcbbb34
2 changed files with 20 additions and 1 deletions

View File

@@ -1,7 +1,7 @@
from urllib.parse import urlparse
import yaml
from flask import Flask, abort, request
from flask import Flask, abort, request, Response
from prometheus_flask_exporter import PrometheusMetrics
from simple_webfinger.models.webfinger import JSONResourceDefinition
@@ -84,6 +84,11 @@ def create_app(config={}):
"No domain is configured for webfinger, this instance will not operate correctly."
)
@app.after_request
def inject_cors(response: Response) -> Response:
response.headers["Access-Control-Allow-Origin"] = "*"
return response
@app.route("/.well-known/webfinger")
def webfinger():
resource = request.args.get("resource")

View File

@@ -56,6 +56,20 @@ def test_invalid_user_request(app, client):
response = client.get("/.well-known/webfinger?resource=nikdoof@doofnet.uk")
assert response.status_code == 404
def test_cors_headers(client):
# https://datatracker.ietf.org/doc/html/rfc7033#section-5
# Access-Control-Allow-Origin: *
response = client.get("/.well-known/webfinger?resource=acct:testaccount@doofnet.uk")
assert response.status_code == 200
assert 'Access-Control-Allow-Origin' in response.headers
assert response.headers['Access-Control-Allow-Origin'] == '*'
def test_content_type_response(client):
# https://datatracker.ietf.org/doc/html/rfc7033#section-10.2
response = client.get("/.well-known/webfinger?resource=acct:testaccount@doofnet.uk")
assert response.status_code == 200
assert response.headers['Content-Type'] == 'application/jrd+json'
def test_rel_filtering(client):
"""
Check that filtering links by rel work correctly