rack-cors 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rack-cors might be problematic. Click here for more details.
- data/README.rdoc +4 -0
- data/VERSION +1 -1
- data/lib/rack/cors.rb +6 -3
- data/rack-cors.gemspec +2 -2
- data/test/cors_test.rb +17 -1
- data/test/test.ru +1 -0
- metadata +4 -4
data/README.rdoc
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.2
|
data/lib/rack/cors.rb
CHANGED
@@ -43,7 +43,7 @@ module Rack
|
|
43
43
|
protected
|
44
44
|
def debug(env, message = nil, &block)
|
45
45
|
logger = @logger || env['rack.logger'] || begin
|
46
|
-
@logger = ::Logger.new(STDOUT).tap {|logger| logger.level = ::Logger::Severity::
|
46
|
+
@logger = ::Logger.new(STDOUT).tap {|logger| logger.level = ::Logger::Severity::INFO}
|
47
47
|
end
|
48
48
|
logger.debug(message, &block)
|
49
49
|
end
|
@@ -129,7 +129,7 @@ module Rack
|
|
129
129
|
|
130
130
|
def process_preflight(env)
|
131
131
|
return nil if invalid_method_request?(env) || invalid_headers_request?(env)
|
132
|
-
to_preflight_headers(env)
|
132
|
+
{'Content-Type' => 'text/plain'}.merge(to_preflight_headers(env))
|
133
133
|
end
|
134
134
|
|
135
135
|
def to_headers(env)
|
@@ -165,7 +165,10 @@ module Rack
|
|
165
165
|
|
166
166
|
def allow_headers?(request_headers)
|
167
167
|
return false if headers.nil?
|
168
|
-
headers == :any ||
|
168
|
+
headers == :any || begin
|
169
|
+
request_headers = request_headers.split(/,\s*/) if request_headers.kind_of?(String)
|
170
|
+
request_headers.all?{|h| headers.include?(h.downcase)}
|
171
|
+
end
|
169
172
|
end
|
170
173
|
|
171
174
|
def ensure_enum(v)
|
data/rack-cors.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rack-cors}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Calvin Yu"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-08-26}
|
13
13
|
s.email = %q{csyu77@gmail.com}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"README.rdoc"
|
data/test/cors_test.rb
CHANGED
@@ -51,11 +51,27 @@ class CorsTest < Test::Unit::TestCase
|
|
51
51
|
assert_preflight_success
|
52
52
|
end
|
53
53
|
|
54
|
+
should 'allow multiple headers match' do
|
55
|
+
# Webkit style
|
56
|
+
preflight_request('http://localhost:3000', '/two_headers', :headers => 'X-Requested-With, X-Domain-Token')
|
57
|
+
assert_preflight_success
|
58
|
+
|
59
|
+
# Gecko style
|
60
|
+
preflight_request('http://localhost:3000', '/two_headers', :headers => 'x-requested-with,x-domain-token')
|
61
|
+
assert_preflight_success
|
62
|
+
end
|
63
|
+
|
54
64
|
should '* origin should allow any origin' do
|
55
65
|
preflight_request('http://locohost:3000', '/public')
|
56
66
|
assert_preflight_success
|
57
67
|
assert_equal '*', last_response.headers['Access-Control-Allow-Origin']
|
58
68
|
end
|
69
|
+
|
70
|
+
should 'return a Content-Type' do
|
71
|
+
preflight_request('http://localhost:3000', '/')
|
72
|
+
assert_preflight_success
|
73
|
+
assert_not_nil last_response.headers['Content-Type']
|
74
|
+
end
|
59
75
|
end
|
60
76
|
|
61
77
|
protected
|
@@ -65,7 +81,7 @@ class CorsTest < Test::Unit::TestCase
|
|
65
81
|
header 'Access-Control-Request-Method', opts[:method] ? opts[:method].to_s.upcase : 'GET'
|
66
82
|
end
|
67
83
|
if opts[:headers]
|
68
|
-
header 'Access-Control-Request-Headers',
|
84
|
+
header 'Access-Control-Request-Headers', opts[:headers]
|
69
85
|
end
|
70
86
|
options path
|
71
87
|
end
|
data/test/test.ru
CHANGED
@@ -7,6 +7,7 @@ use Rack::Cors do |cfg|
|
|
7
7
|
allow.resource '/get-only', :methods => :get
|
8
8
|
allow.resource '/', :headers => :any
|
9
9
|
allow.resource '/single_header', :headers => 'x-domain-token'
|
10
|
+
allow.resource '/two_headers', :headers => %w{x-domain-token x-requested-with}
|
10
11
|
# allow.resource '/file/at/*',
|
11
12
|
# :methods => [:get, :post, :put, :delete],
|
12
13
|
# :headers => :any,
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-cors
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 2
|
10
|
+
version: 0.2.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Calvin Yu
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-08-26 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|