提交 45d679bc 编写于 作者: D David Heinemeier Hansson

Added protection from trailing slashes on page caching (closes #10229) [devrieda]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8226 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
上级 4d177ae0
*SVN*
* Added protection from trailing slashes on page caching #10229 [devrieda]
* Asset timestamps are appended, not prepended. Closes #10276 [mnaberez]
* Minor inconsistency in description of render example. Closes #10029 [ScottSchram]
......
......@@ -106,7 +106,7 @@ def caches_page(*actions)
private
def page_cache_file(path)
name = ((path.empty? || path == "/") ? "/index" : URI.unescape(path))
name = (path.empty? || path == "/") ? "/index" : URI.unescape(path.chomp('/'))
name << page_cache_extension unless (name.split('/').last || name).include? '.'
return name
end
......
......@@ -35,6 +35,10 @@ def expire_custom_path
expire_page("/index.html")
head :ok
end
def trailing_slash
render :text => "Sneak attack"
end
end
class PageCachingTest < Test::Unit::TestCase
......@@ -91,6 +95,16 @@ def test_should_expire_cache_with_custom_path
get :expire_custom_path
assert !File.exist?("#{FILE_STORE_PATH}/index.html")
end
def test_should_cache_without_trailing_slash_on_url
@controller.class.cache_page 'cached content', '/page_caching_test/trailing_slash'
assert File.exist?("#{FILE_STORE_PATH}/page_caching_test/trailing_slash.html")
end
def test_should_cache_with_trailing_slash_on_url
@controller.class.cache_page 'cached content', '/page_caching_test/trailing_slash/'
assert File.exist?("#{FILE_STORE_PATH}/page_caching_test/trailing_slash.html")
end
uses_mocha("should_cache_ok_at_custom_path") do
def test_should_cache_ok_at_custom_path
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册