mirror of
https://github.com/meineerde/redmine.git
synced 2026-02-01 03:57:15 +00:00
Downloading .js files from the repository browser fails with a 422 error due to ActionController::InvalidCrossOriginRequest (#42839).
Patch by Go MAEDA (user:maeda). git-svn-id: https://svn.redmine.org/redmine/trunk@23857 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
52daa476c9
commit
69dde23d5c
@ -160,7 +160,15 @@ class RepositoriesController < ApplicationController
|
||||
# Force the download
|
||||
send_opt = {:filename => filename_for_content_disposition(@path.split('/').last)}
|
||||
send_type = Redmine::MimeType.of(@path)
|
||||
send_opt[:type] = send_type.to_s if send_type
|
||||
case send_type
|
||||
when nil
|
||||
# No MIME type detected. Let Rails use the default type.
|
||||
when 'application/javascript'
|
||||
# Avoid ActionController::InvalidCrossOriginRequest exception by setting non-JS content type
|
||||
send_opt[:type] = 'text/plain'
|
||||
else
|
||||
send_opt[:type] = send_type
|
||||
end
|
||||
send_opt[:disposition] = disposition(@path)
|
||||
send_data @repository.cat(@path, @rev), send_opt
|
||||
else
|
||||
|
||||
@ -358,6 +358,27 @@ class RepositoriesSubversionControllerTest < Redmine::RepositoryControllerTest
|
||||
assert_equal "attachment; filename=\"helloworld.c\"; filename*=UTF-8''helloworld.c", @response.headers['Content-Disposition']
|
||||
end
|
||||
|
||||
def test_entry_should_return_text_plain_for_js_files
|
||||
# JavaScript files should be served as 'text/plain' instead of
|
||||
# 'application/javascript' to avoid
|
||||
# ActionController::InvalidCrossOriginRequest exception
|
||||
assert_equal 0, @repository.changesets.count
|
||||
@repository.fetch_changesets
|
||||
@project.reload
|
||||
assert_equal NUM_REV, @repository.changesets.count
|
||||
get(
|
||||
:raw,
|
||||
:params => {
|
||||
:id => PRJ_ID,
|
||||
:repository_id => @repository.id,
|
||||
:path => repository_path_hash(['subversion_test', 'foo.js'])[:param]
|
||||
}
|
||||
)
|
||||
assert_response :success
|
||||
assert_equal 'text/plain', @response.media_type
|
||||
assert_match /attachment/, @response.headers['Content-Disposition']
|
||||
end
|
||||
|
||||
def test_directory_entry
|
||||
assert_equal 0, @repository.changesets.count
|
||||
@repository.fetch_changesets
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user