* Make host_meta/webfinger replies cacheable (fixes #6100)
Drop common code for handling users and sessions as webfinger queries
are very basic, public APIs.
Also explicitly mark results as cacheable with “expires_in”.
* Add “Vary: Accept” header for caching since content-negociation is used
# frozen_string_literal: true
module WellKnown
- class HostMetaController < ApplicationController
+ class HostMetaController < ActionController::Base
include RoutingHelper
+ before_action { response.headers['Vary'] = 'Accept' }
+
def show
@webfinger_template = "#{webfinger_url}?resource={uri}"
respond_to do |format|
format.xml { render content_type: 'application/xrd+xml' }
end
+
+ expires_in(3.days, public: true)
end
end
end
# frozen_string_literal: true
module WellKnown
- class WebfingerController < ApplicationController
+ class WebfingerController < ActionController::Base
include RoutingHelper
+ before_action { response.headers['Vary'] = 'Accept' }
+
def show
@account = Account.find_local!(username_from_resource)
render content_type: 'application/xrd+xml'
end
end
+
+ expires_in(3.days, public: true)
rescue ActiveRecord::RecordNotFound
head 404
end