提交 439c23dc 编写于 作者: B brainopia 提交者: Santiago Pastorino

Fix edge cases for domain :all option on cookie store

Dont set explicit domain for cookies if host is not a domain name

[#6002 state:committed]
Signed-off-by: NSantiago Pastorino <santiago@wyeworks.com>
上级 17afec0a
......@@ -131,8 +131,11 @@ def handle_options(options) #:nodoc:
options[:path] ||= "/"
if options[:domain] == :all
@host =~ DOMAIN_REGEXP
options[:domain] = ".#{$1}.#{$2}"
# if host is not ip and matches domain regexp
# (ip confirms to domain regexp so we explicitly check for ip)
options[:domain] = if (@host !~ /^[\d.]+$/) && (@host =~ DOMAIN_REGEXP)
".#{$1}.#{$2}"
end
end
end
......
......@@ -295,6 +295,27 @@ def test_cookie_with_all_domain_option_using_host_with_port
assert_cookie_header "user_name=rizwanreza; domain=.nextangle.local; path=/"
end
def test_cookie_with_all_domain_option_using_localhost
@request.host = "localhost"
get :set_cookie_with_domain
assert_response :success
assert_cookie_header "user_name=rizwanreza; path=/"
end
def test_cookie_with_all_domain_option_using_ipv4_address
@request.host = "192.168.1.1"
get :set_cookie_with_domain
assert_response :success
assert_cookie_header "user_name=rizwanreza; path=/"
end
def test_cookie_with_all_domain_option_using_ipv6_address
@request.host = "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
get :set_cookie_with_domain
assert_response :success
assert_cookie_header "user_name=rizwanreza; path=/"
end
def test_deleting_cookie_with_all_domain_option
get :delete_cookie_with_domain
assert_response :success
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册