我使用 Rails 3.2、turbolinks 和 Filepicker.io 开发一个 Web 应用程序
我像这样加载 API 密钥(coffeescript)。我认为$(document).ready
就足够了,因为文件选择器脚本在第一个请求时加载一次。
$(document).ready ->
filepicker.setKey "MY_KEY"
我使用以下内容(coffeescript)加载 Filepicker。
我应该注意的是我使用jquery-turbolinks
gem,它将对 Turbolinks 的支持直接构建到 jquery 中。
jQuery ->
$("#publications_bulk-new #upload-button").on "click", ->
form = $(this).closest('form')
filepicker.pickAndStore
当我直接访问该页面时,文件选择器按预期工作。
但是,当我使用 Turbolink 请求访问该页面时,我无法上传任何文件。
我可以打开表单、在 Dropbox 中浏览等。
但在上传时,我看到以下红色错误消息:
Cannot send results to the applicaiton. Sorry about this, it's our fault. Please close this window and try again.
再试一次也没有帮助。
我检查了 Chrome 28.0 的控制台是否有任何错误消息,发现了以下内容:
Blocked a frame with origin "https://www.filepicker.io" from accessing a frame with origin "http://placeholder.library.dev". The frame requesting access has a protocol of "https", the frame being accessed has a protocol of "http". Protocols must match.
main.js:7
u main.js:7
l main.js:7
i.uploadFiles main.js:7
v.onFileDrop main.js:7
r lodash.min.js:6
(anonymous function) main.js:7
Uncaught Communication iframe not found main.js:7
u main.js:7
l main.js:7
i.uploadFiles main.js:7
v.onFileDrop main.js:7
r lodash.min.js:6
(anonymous function)
2013-07-29 更新“协议、域和端口必须匹配”
我将当前代码推送到我的生产环境,因为消息表明这取决于我的(开发)页面缺少 SSL 加密。
不幸的是,这不是唯一的问题
Blocked a frame with origin "https://www.filepicker.io" from accessing a frame with origin "https://jkreutz.mylibrar.io". Protocols, domains, and ports must match. main.js:7
u main.js:7
l main.js:7
i.uploadFiles main.js:7
v.onFileDrop main.js:7
r lodash.min.js:6
(anonymous function) main.js:7
Uncaught Communication iframe not found main.js:7
u main.js:7
l main.js:7
i.uploadFiles main.js:7
v.onFileDrop main.js:7
r lodash.min.js:6
(anonymous function)