谷歌浏览器中有一个奇怪的行为,在这个问题中也有描述:rails redirects to 'data:,'
当创建新资源并且我的控制器重定向到 show 操作时, chrome会在地址栏中启动加载空白页面'data:,'
。提出上述问题的作者的答复如下:
这是一项安全功能,新页面的 HTML 内容与 Chrome 阻止的提交表单的 HTML 内容相匹配。
然而,没有解释如何修复它。该行为仅存在于 Chrome 浏览器中。
谷歌浏览器中有一个奇怪的行为,在这个问题中也有描述:rails redirects to 'data:,'
当创建新资源并且我的控制器重定向到 show 操作时, chrome会在地址栏中启动加载空白页面'data:,'
。提出上述问题的作者的答复如下:
这是一项安全功能,新页面的 HTML 内容与 Chrome 阻止的提交表单的 HTML 内容相匹配。
然而,没有解释如何修复它。该行为仅存在于 Chrome 浏览器中。
我一直在谷歌搜索,发现在 Rails 4.0 中使用 iframe 编辑帖子会导致重定向到“data:”
Rails 4 现在为所有请求设置 X-XSS-Protection 标头,因此 iframe 在提交表单后会触发 Chrome 中的 XSS 保护。(https://github.com/elektronaut/sugar/issues/41#issuecomment-25987368)
解决方案,将其添加到您的控制器:
before_filter :disable_xss_protection
protected
def disable_xss_protection
# Disabling this is probably not a good idea,
# but the header causes Chrome to choke when being
# redirected back after a submit and the page contains an iframe.
response.headers['X-XSS-Protection'] = "0"
end
我不相信它与 mimetype 问题有关。当用户发布其内容中包含 iframe 的博客条目时,我会遇到此问题。保存条目后,它会重定向到“显示”操作,该操作将包含用户的内容(原始/html_safe)。Chrome 将显示该页面片刻,然后由于某种原因再次重定向到空白的“数据:”页面(在历史上它只会留下数据:和提交页面)。
这是我注册的响应标头:
Ruby 2.0.0 / Rails 4 迁移的应用程序行为不正确(登台服务器)
Cache-Control:max-age=0, no-cache, no-store
Cache-Control:max-age=0, private, must-revalidate
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:25359
Content-Type:text/html; charset=utf-8
Date:Thu, 23 Jan 2014 16:37:11 GMT
ETag:"6d9d4961ea2df12de67f8a92c43579fb"
Server:Apache
Set-Cookie: _**********_session_dev=1774518c571bf4e65189d607b276e65e; domain=*********.com; path=/; expires=Thu, 23 Jan 2014 18:37:11 -0000; HttpOnly
Status:200 OK
Vary:Accept-Encoding
X-Content-Type-Options:nosniff
X-Frame-Options:SAMEORIGIN
X-Mod-Pagespeed:1.6.29.7-3566
X-Request-Id:9f5314a5-ad01-4aec-bd0f-04e8afd9bdac
X-UA-Compatible:chrome=1
X-XSS-Protection:1; mode=block
具有正确行为的 Ruby 1.8.7 / Rails 2 应用程序(产品服务器)
HTTP/1.1 200 OK
Date: Thu, 23 Jan 2014 16:32:53 GMT
Server: Apache
ETag: "f12135ddd373205352f9754328368217"
Cache-Control: private, max-age=0, must-revalidate
Status: 200
X-Mod-Pagespeed: 1.4.26.5-3533
Cache-Control: max-age=0, no-cache, no-store
Vary: Accept-Encoding
Content-Length: 27167
X-Cnection: close
Content-Type: text/html; charset=utf-8
Connection: Keep-Alive
Content-Encoding: gzip
还尝试将其作为初始 html:
<!DOCTYPE html>
<html>
<head>...
也只是(作为随机测试来检测可能出现的问题)
<!DOCTYPE html>
<head>...
我所知道的是,如果提交的内容有 iframe,当重定向到博客“显示”页面时,chrome 的奇怪行为就会出现。
好的,我想我知道这是什么。您可以在 data: 协议中指定图像和文本,我相信 Chrome 会看到转义的 HTML 并认为它是数据。由于未指定 mime 类型,因此在冒号后将 mime 类型留空,并仅打印逗号。
http://guides.rubyonrails.org/security.html#redirection
Rails 4 会自动转义 HTML,因此如果您尝试呈现 HTML,则必须指明不要转义它。查看渲染选项:
http://guides.rubyonrails.org/security.html#redirection
您可以使用raw()
直接呈现 HTML。