mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FEATURE: CORS settings per-site in a multisite env
This commit is contained in:
parent
bb59798066
commit
f88075cbba
@ -93,7 +93,7 @@ asset_redis_url =
|
|||||||
|
|
||||||
# enable Cross-origin Resource Sharing (CORS) directly at the application level
|
# enable Cross-origin Resource Sharing (CORS) directly at the application level
|
||||||
enable_cors = false
|
enable_cors = false
|
||||||
cors_origin = '*'
|
cors_origin = ''
|
||||||
|
|
||||||
# enable if you really need to serve assets in prd
|
# enable if you really need to serve assets in prd
|
||||||
serve_static_assets = false
|
serve_static_assets = false
|
||||||
|
@ -1,24 +1,30 @@
|
|||||||
if GlobalSetting.enable_cors && GlobalSetting.cors_origin.present?
|
if GlobalSetting.enable_cors
|
||||||
|
|
||||||
class Discourse::Cors
|
class Discourse::Cors
|
||||||
def initialize(app, options = nil)
|
def initialize(app, options = nil)
|
||||||
@app = app
|
@app = app
|
||||||
@origins = GlobalSetting.cors_origin.split(',').map(&:strip)
|
if GlobalSetting.enable_cors && GlobalSetting.cors_origin.present?
|
||||||
|
@global_origins = GlobalSetting.cors_origin.split(',').map(&:strip)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def call(env)
|
def call(env)
|
||||||
status, headers, body = @app.call(env)
|
status, headers, body = @app.call(env)
|
||||||
origin = nil
|
origin = nil
|
||||||
|
cors_origins = @global_origins || []
|
||||||
|
cors_origins += SiteSetting.cors_origins.split('|') if SiteSetting.cors_origins
|
||||||
|
|
||||||
if origin = env['HTTP_ORIGIN']
|
if cors_origins
|
||||||
origin = nil unless @origins.include? origin
|
if origin = env['HTTP_ORIGIN']
|
||||||
|
origin = nil unless cors_origins.include?(origin)
|
||||||
|
end
|
||||||
|
|
||||||
|
headers['Access-Control-Allow-Origin'] = origin || cors_origins[0]
|
||||||
|
headers['Access-Control-Allow-Credentials'] = "true"
|
||||||
end
|
end
|
||||||
|
|
||||||
headers['Access-Control-Allow-Origin'] = origin || @origins[0]
|
|
||||||
headers['Access-Control-Allow-Credentials'] = "true"
|
|
||||||
[status,headers,body]
|
[status,headers,body]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Rails.configuration.middleware.insert 0, Discourse::Cors
|
Rails.configuration.middleware.use Discourse::Cors
|
||||||
end
|
end
|
||||||
|
@ -726,6 +726,7 @@ en:
|
|||||||
enable_escaped_fragments: "Fall back to Google's Ajax-Crawling API if no webcrawler is detected. See https://support.google.com/webmasters/answer/174992?hl=en"
|
enable_escaped_fragments: "Fall back to Google's Ajax-Crawling API if no webcrawler is detected. See https://support.google.com/webmasters/answer/174992?hl=en"
|
||||||
enable_noscript_support: "Enable standard webcrawler search engine support via the noscript tag"
|
enable_noscript_support: "Enable standard webcrawler search engine support via the noscript tag"
|
||||||
allow_moderators_to_create_categories: "Allow moderators to create new categories"
|
allow_moderators_to_create_categories: "Allow moderators to create new categories"
|
||||||
|
cors_origins: "Allowed origins for cross-origin requests (CORS). Each origin must include http:// or https://. The DISCOURSE_ENABLE_CORS env variable must be set to true to enable CORS."
|
||||||
top_menu: "Determine which items appear in the homepage navigation, and in what order. Example latest|new|unread|starred|categories|top|read|posted"
|
top_menu: "Determine which items appear in the homepage navigation, and in what order. Example latest|new|unread|starred|categories|top|read|posted"
|
||||||
post_menu: "Determine which items appear on the post menu, and in what order. Example like|edit|flag|delete|share|bookmark|reply"
|
post_menu: "Determine which items appear on the post menu, and in what order. Example like|edit|flag|delete|share|bookmark|reply"
|
||||||
post_menu_hidden_items: "The menu items to hide by default in the post menu unless an expansion ellipsis is clicked on."
|
post_menu_hidden_items: "The menu items to hide by default in the post menu unless an expansion ellipsis is clicked on."
|
||||||
|
@ -542,6 +542,9 @@ security:
|
|||||||
allow_index_in_robots_txt: true
|
allow_index_in_robots_txt: true
|
||||||
enable_noscript_support: true
|
enable_noscript_support: true
|
||||||
allow_moderators_to_create_categories: false
|
allow_moderators_to_create_categories: false
|
||||||
|
cors_origins:
|
||||||
|
default: ''
|
||||||
|
type: list
|
||||||
|
|
||||||
onebox:
|
onebox:
|
||||||
enable_flash_video_onebox: false
|
enable_flash_video_onebox: false
|
||||||
|
Loading…
Reference in New Issue
Block a user