mirror of
https://github.com/nikdoof/simple-webfinger.git
synced 2025-12-11 17:42:14 +00:00
Add CORS support
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
from urllib.parse import urlparse
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
from flask import Flask, abort, request
|
from flask import Flask, abort, request, Response
|
||||||
from prometheus_flask_exporter import PrometheusMetrics
|
from prometheus_flask_exporter import PrometheusMetrics
|
||||||
|
|
||||||
from simple_webfinger.models.webfinger import JSONResourceDefinition
|
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."
|
"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")
|
@app.route("/.well-known/webfinger")
|
||||||
def webfinger():
|
def webfinger():
|
||||||
resource = request.args.get("resource")
|
resource = request.args.get("resource")
|
||||||
|
|||||||
@@ -56,6 +56,20 @@ def test_invalid_user_request(app, client):
|
|||||||
response = client.get("/.well-known/webfinger?resource=nikdoof@doofnet.uk")
|
response = client.get("/.well-known/webfinger?resource=nikdoof@doofnet.uk")
|
||||||
assert response.status_code == 404
|
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):
|
def test_rel_filtering(client):
|
||||||
"""
|
"""
|
||||||
Check that filtering links by rel work correctly
|
Check that filtering links by rel work correctly
|
||||||
|
|||||||
Reference in New Issue
Block a user