Browse Source

Make host_meta/webfinger replies cacheable (fixes #6100) (#6101)

* 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
pull/4/head
ThibG 6 years ago
committed by Eugen Rochko
parent
commit
868568d1c1
2 changed files with 10 additions and 2 deletions
  1. +5
    -1
      app/controllers/well_known/host_meta_controller.rb
  2. +5
    -1
      app/controllers/well_known/webfinger_controller.rb

+ 5
- 1
app/controllers/well_known/host_meta_controller.rb View File

@ -1,15 +1,19 @@
# 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

+ 5
- 1
app/controllers/well_known/webfinger_controller.rb View File

@ -1,9 +1,11 @@
# 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)
@ -16,6 +18,8 @@ module WellKnown
render content_type: 'application/xrd+xml'
end
end
expires_in(3.days, public: true)
rescue ActiveRecord::RecordNotFound
head 404
end

Loading…
Cancel
Save