Skip to content

Commit 915d47a

Browse files
connorshearafaelfranca
authored andcommitted
Remove requirement of HTTPS for using SRI (#362)
* Remove requirement of HTTPS for using SRI The spec has been updated since this code was originally written and this no longer requires a Secure Context: https://www.w3.org/TR/SRI/#is-response-eligible-for-integrity-validation * Revert note about HTTPS restriction HTTPS is no longer required for SRI support. * Remove unnecessary secure_subresource_integrity_context? method. * Remove SSL tests.
1 parent 9fc803e commit 915d47a

File tree

3 files changed

+3
-54
lines changed

3 files changed

+3
-54
lines changed

README.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,6 @@ javascript_include_tag :application, integrity: true
158158
# => "<script src="/assets/application.js" integrity="sha256-TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs="></script>"
159159
```
160160

161-
Note that sprockets-rails only adds integrity hashes to assets when served over an HTTPS connection.
162-
163161

164162
## Contributing to Sprockets Rails
165163

lib/sprockets/rails/helper.rb

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -178,23 +178,12 @@ def stylesheet_link_tag(*sources)
178178
# doesn't bleed into the tag attributes, but also check its value if
179179
# it's boolean-ish.
180180
def compute_integrity?(options)
181-
if secure_subresource_integrity_context?
182-
case options['integrity']
183-
when nil, false, true
184-
options.delete('integrity') == true
185-
end
186-
else
187-
options.delete 'integrity'
188-
false
181+
case options['integrity']
182+
when nil, false, true
183+
options.delete('integrity') == true
189184
end
190185
end
191186

192-
# Only serve integrity metadata for HTTPS requests:
193-
# http://www.w3.org/TR/SRI/#non-secure-contexts-remain-non-secure
194-
def secure_subresource_integrity_context?
195-
respond_to?(:request) && self.request && self.request.ssl?
196-
end
197-
198187
# Enable split asset debugging. Eventually will be deprecated
199188
# and replaced by source maps in Sprockets 3.x.
200189
def request_debug_assets?

test/test_helper.rb

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -205,44 +205,6 @@ def test_stylesheet_path
205205
end
206206
end
207207

208-
class NoSSLHelperTest < NoHostHelperTest
209-
def setup
210-
super
211-
212-
@view.request = nil
213-
end
214-
215-
def test_javascript_include_tag_integrity
216-
assert_dom_equal %(<script src="/javascripts/static.js"></script>),
217-
@view.javascript_include_tag("static", integrity: true)
218-
assert_dom_equal %(<script src="/javascripts/static.js"></script>),
219-
@view.javascript_include_tag("static", integrity: false)
220-
assert_dom_equal %(<script src="/javascripts/static.js"></script>),
221-
@view.javascript_include_tag("static", integrity: nil)
222-
223-
assert_dom_equal %(<script src="/javascripts/static.js"></script>),
224-
@view.javascript_include_tag("static", integrity: "sha-256-TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs=")
225-
226-
assert_dom_equal %(<script src="/assets/foo.js"></script>),
227-
@view.javascript_include_tag("foo", integrity: true)
228-
end
229-
230-
def test_stylesheet_link_tag_integrity
231-
assert_dom_equal %(<link href="/stylesheets/static.css" media="screen" rel="stylesheet" />),
232-
@view.stylesheet_link_tag("static", integrity: true)
233-
assert_dom_equal %(<link href="/stylesheets/static.css" media="screen" rel="stylesheet" />),
234-
@view.stylesheet_link_tag("static", integrity: false)
235-
assert_dom_equal %(<link href="/stylesheets/static.css" media="screen" rel="stylesheet" />),
236-
@view.stylesheet_link_tag("static", integrity: nil)
237-
238-
assert_dom_equal %(<link href="/stylesheets/static.css" media="screen" rel="stylesheet" />),
239-
@view.stylesheet_link_tag("static", integrity: "sha-256-5YzTQPuOJz/EpeXfN/+v1sxsjAj/dw8q26abiHZM3A4=")
240-
241-
assert_dom_equal %(<link href="/assets/foo.css" media="screen" rel="stylesheet" />),
242-
@view.stylesheet_link_tag("foo", integrity: true)
243-
end
244-
end
245-
246208
class RelativeHostHelperTest < HelperTest
247209
def setup
248210
super

0 commit comments

Comments
 (0)