【问题标题】:Unsafe JavaScript attempt to access frame, when try to upload file with ajax尝试使用 ajax 上传文件时,不安全的 JavaScript 尝试访问框架
【发布时间】:2011-03-01 20:11:53
【问题描述】:

我的目标是使用 ajax 方式上传文件。 我使用这个javascript库http://valums.com/wp-content/uploads/ajax-upload/demo-jquery.htm

  1. 我的页面上有一个链接,例如示例页面上的“上传”按钮。
  2. 当我点击它时,“打开文件”对话框打开。
  3. 我选择文件并自动提交表单。

这是我的 javascript 代码。

var upload_btn = $('#upload-opml');
  new AjaxUpload(upload_btn.attr('id'), {
    action: upload_btn.attr('href'),
    name: 'opml',
    onComplete: function (file, response) {
      //
  }
});

这是 Ruby on Rails 中的服务器代码。

def upload_opml
    render :text => 'hello'
end

标题,取自 Firebug。

>> Response headers
Server  nginx/0.7.62
Date    Wed, 09 Jun 2010 19:03:28 GMT
Content-Type    text/html; charset=utf-8
Connection  keep-alive
Etag    "5d41402abc4b2a76b9719d911017c592"
X-Runtime   18
Content-Length  5
Cache-Control   private, max-age=0, must-revalidate
Set-Cookie  _RssWebApp_session=BAh7CDoPc2Vzc2lvbl9pZCIlMzJhMTQ0ZWZhOGM3YmIwODFhZmFmNjkwYTI1YWQ2ZjQ6EF9jc3JmX3Rva2VuIjEvZHVzdm1NOVlMTUF6bEw3cGRFT2I3RzZvcVJZUU42bCtMNS9PVVYrNHdBPToMdXNlcl9pZGkG--13f1950a9530591881404fbfab7b1246f98f0d81; path=/; HttpOnly

>> Request headers
Host    readbox.cz
User-Agent  Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.2) Gecko/20100115 Firefox/3.6
Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language ru,en-us;q=0.7,en;q=0.3
Accept-Encoding gzip,deflate
Accept-Charset  windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive  115
Connection  keep-alive
Referer http://readbox.cz/view
Cookie  _RssWebApp_session=BAh7CDoPc2Vzc2lvbl9pZCIlMzJhMTQ0ZWZhOGM3YmIwODFhZmFmNjkwYTI1YWQ2ZjQ6EF9jc3JmX3Rva2VuIjEvZHVzdm1NOVlMTUF6bEw3cGRFT2I3RzZvcVJZUU42bCtMNS9PVVYrNHdBPToMdXNlcl9pZGkG--13f1950a9530591881404fbfab7b1246f98f0d81; login=1; APE_Cookie=%7B%22frequency%22%3A11%7D; show-tsl=0

但在 Firefox 中出现错误

!:@8?BC http://readbox.cz (document.domain=http://readbox.cz) >B:070=> 2 @07@5H5=88 =0 ?>;CG5=85 A2>9AB20 HTMLDocument.readyState 87 @ 987654324@ (document.domain =5 1K; CAB0=>2;5=).
[打破这个错误] if (doc.readyState && doc.readyState != 'complete') {

在谷歌浏览器中

不安全的 JavaScript 尝试从 URL 为 http://readbox.cz/view#/posts/all 的框架访问 URL 为 http://readbox.cz/subscriptions/upload_opml 的框架。域、协议和端口必须匹配。
/javascripts/ajaxupload.js?1276107673:574
未捕获的类型错误:无法读取未定义的属性“readyState”

域 readbox.info 指向 127.0.0.1。这是为了开发。

【问题讨论】:

    标签: ajax json upload access-denied


    【解决方案1】:

    我遇到了同样的问题,我通过这个提交修复了它编辑 ajaxupload 库:

    https://github.com/felipelalli/ajax-upload/commit/9307f5eb6ded1ec63eac828a7ef4b8187acb9617

    我已经向作者发送了拉取请求。

    我在使用沙盒开发人员环境(Orkut 的 opensocial)时遇到了这个问题。我现在只检查“doc”是否未定义。上传工作正常,但回调现在没有答案(答案未定义)。

    我不知道究竟是什么原因,但我认为这是开发环境的某种限制。

    如果您想下载修复程序,请查看:https://github.com/felipelalli/ajax-upload/commits/3.9.1

    【讨论】:

      猜你喜欢
      • 2011-05-18
      • 2013-02-02
      • 2011-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多