【问题标题】:Filepicker.io Cross-Domain Restrictions [Rails4 + Turbolinks]Filepicker.io 跨域限制 [Rails4 + Turbolinks]
【发布时间】:2013-07-19 19:32:34
【问题描述】:

我在 Rails 4 网站上遇到了 Filepicker.io 问题。具体来说,当我尝试通过 Filepicker.io 小部件上传文件时,我偶尔会收到以下 JavaScript 错误消息(大约 50% 的情况)。

Blocked a frame with origin "https://www.filepicker.io" from accessing a frame with origin "https://salesbeach.com". Protocols, domains, and ports must match. 

Chrome 和 Firefox 都会出现这种情况。我的假设是 Filepicker.io 应该但不是返回 Access-Control-Allow-Origin: * 标头。但是,我在其他网站上使用过 Filepicker.io 没有这个问题,我想知道 Turbolinks 是否是罪魁祸首。

诊断信息

我的 JavaScript 调用是:

filepicker.pickAndStore({mimetypes: mimeTypes},{},function(fpfiles) { ... }

然后我通过以下方式加载 Filepicker 库(在 HTML <head> 中):

(function() {
  $(document).ready(function() {
    $.getScript('//api.filepicker.io/v1/filepicker.js', function() {
      filepicker.setKey('#{MY_API_KEY}');
    });
  })
})();

<iframe> 具有以下 HTTP 请求/响应(来自 Chrome 调试工具):

请求

Request URL:https://www.filepicker.io/dialog/comm_iframe/
Request Method:GET
Status Code:200 OK
Request Headers
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
DNT:1
Host:www.filepicker.io
Pragma:no-cache
Referer:https://salesbeach.com/playground
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1566.2 Safari/537.36

回应

Response Headers
Connection:keep-alive
Content-Encoding:gzip
Content-Length:857
Content-Type:text/html; charset=utf-8
Date:Fri, 19 Jul 2013 19:23:22 GMT
P3P:CP='IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'
P3P:CP="OTI DSP COR ADM DEV TAIo PSA PSD IVAi IVDi CONi HIS OUR IND CNT COM INT NAV"
Server:nginx
Vary:Accept-Encoding

另外,我还包含了一个重现该错误的游乐场:Playground Environment

【问题讨论】:

标签: ruby-on-rails cross-domain ruby-on-rails-4 filepicker.io turbolinks


【解决方案1】:

略微修改自:filepicker.io Javascript API calls result in unsafe javascript errors

这是一个已知的chrome/webkit 问题。这发生在通过 JavaScript(Ink File Picker 使用的技术)向自身添加 flash 标记的任何跨域 iframe 上。它不应该影响功能,是因为他们尝试使用闪光灯检测来查看网络摄像头图片和视频录制选项是否可行。

【讨论】:

    猜你喜欢
    • 2012-10-18
    • 2013-05-14
    • 1970-01-01
    • 2011-01-02
    • 2013-12-29
    • 2011-11-19
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多