Right now, this includes three endpoints: host-meta, webfinger, and change-password. host-meta and webfinger are publicly available and do not use any authentication. Nothing bad can be done by accessing them in a user's browser. change-password being CORS-enabled will only reveal the URL it redirects to (which is /auth/edit) but not anything about the actual /auth/edit page, because it does not have CORS enabled. The documentation for hosting an instance on a different domain should also be updated to point out that Access-Control-Allow-Origin: * should be set at a minimum for the /.well-known/host-meta redirect to allow browser-based non-proxied instance discovery.
		
			
				
	
	
		
			31 lines
		
	
	
		
			904 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			904 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # Be sure to restart your server when you modify this file.
 | |
| 
 | |
| # Avoid CORS issues when API is called from the frontend app.
 | |
| # Handle Cross-Origin Resource Sharing (CORS) in order to accept cross-origin AJAX requests.
 | |
| 
 | |
| # Read more: https://github.com/cyu/rack-cors
 | |
| 
 | |
| Rails.application.config.middleware.insert_before 0, Rack::Cors do
 | |
|   allow do
 | |
|     origins '*'
 | |
| 
 | |
|     resource '/.well-known/*',
 | |
|       headers: :any,
 | |
|       methods: [:get],
 | |
|       credentials: false
 | |
|     resource '/@:username',
 | |
|       headers: :any,
 | |
|       methods: [:get],
 | |
|       credentials: false
 | |
|     resource '/api/*',
 | |
|       headers: :any,
 | |
|       methods: [:post, :put, :delete, :get, :patch, :options],
 | |
|       credentials: false,
 | |
|       expose: ['Link', 'X-RateLimit-Reset', 'X-RateLimit-Limit', 'X-RateLimit-Remaining', 'X-Request-Id']
 | |
|     resource '/oauth/token',
 | |
|       headers: :any,
 | |
|       methods: [:post],
 | |
|       credentials: false
 | |
|   end
 | |
| end
 |