Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
a086ef6f
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a086ef6f
编写于
9月 15, 2012
作者:
R
Rafael Mendonça França
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #7649 from steveklabnik/issue_2520
Support for multiple etags in an If-None-Match header
上级
9cd831a0
cd461c3e
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
48 addition
and
1 deletion
+48
-1
actionpack/CHANGELOG.md
actionpack/CHANGELOG.md
+2
-0
actionpack/lib/action_dispatch/http/cache.rb
actionpack/lib/action_dispatch/http/cache.rb
+7
-1
actionpack/test/dispatch/request_test.rb
actionpack/test/dispatch/request_test.rb
+39
-0
未找到文件。
actionpack/CHANGELOG.md
浏览文件 @
a086ef6f
## Rails 4.0.0 (unreleased) ##
*
Support multiple etags in If-None-Match header.
*Travis Warlick*
*
Allow to configure how unverified request will be handled using
`:with`
option in
`protect_from_forgery`
method.
...
...
actionpack/lib/action_dispatch/http/cache.rb
浏览文件 @
a086ef6f
...
...
@@ -17,12 +17,18 @@ def if_none_match
env
[
HTTP_IF_NONE_MATCH
]
end
def
if_none_match_etags
(
if_none_match
?
if_none_match
.
split
(
/\s*,\s*/
)
:
[]).
collect
do
|
etag
|
etag
.
gsub
(
/^\"|\"$/
,
""
)
end
end
def
not_modified?
(
modified_at
)
if_modified_since
&&
modified_at
&&
if_modified_since
>=
modified_at
end
def
etag_matches?
(
etag
)
if_none_match
&&
if_none_match
==
etag
if_none_match
_etags
.
include?
(
etag
)
end
# Check response freshness (Last-Modified and ETag) against request
...
...
actionpack/test/dispatch/request_test.rb
浏览文件 @
a086ef6f
...
...
@@ -746,6 +746,45 @@ def url_for(options = {})
assert_equal
"/foo?bar"
,
path
end
test
"if_none_match_etags none"
do
request
=
stub_request
assert_equal
nil
,
request
.
if_none_match
assert_equal
[],
request
.
if_none_match_etags
assert
!
request
.
etag_matches?
(
"foo"
)
assert
!
request
.
etag_matches?
(
nil
)
end
test
"if_none_match_etags single"
do
header
=
'the-etag'
request
=
stub_request
(
'HTTP_IF_NONE_MATCH'
=>
header
)
assert_equal
header
,
request
.
if_none_match
assert_equal
[
header
],
request
.
if_none_match_etags
assert
request
.
etag_matches?
(
"the-etag"
)
end
test
"if_none_match_etags quoted single"
do
header
=
'"the-etag"'
request
=
stub_request
(
'HTTP_IF_NONE_MATCH'
=>
header
)
assert_equal
header
,
request
.
if_none_match
assert_equal
[
'the-etag'
],
request
.
if_none_match_etags
assert
request
.
etag_matches?
(
"the-etag"
)
end
test
"if_none_match_etags multiple"
do
header
=
'etag1, etag2, "third etag", "etag4"'
expected
=
[
'etag1'
,
'etag2'
,
'third etag'
,
'etag4'
]
request
=
stub_request
(
'HTTP_IF_NONE_MATCH'
=>
header
)
assert_equal
header
,
request
.
if_none_match
assert_equal
expected
,
request
.
if_none_match_etags
expected
.
each
do
|
etag
|
assert
request
.
etag_matches?
(
etag
),
etag
end
end
protected
def
stub_request
(
env
=
{})
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录