我的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
此外,我还包含了一个重现错误的游乐场:游乐场环境
从:filepicker.io Javascript API调用略微修改会导致不安全的Javascript错误
这是一个已知的chrome/webkit问题。这种情况发生在任何通过JavaScript(Ink File Picker使用的技术)为自己添加flash标记的跨域iframe上。这不应该影响功能,因为他们试图使用闪光灯检测来查看网络摄像头的图片和视频录制选项是否可行。