2011-04-12 90 views
2

我试图用jQuery Form Plugi n来处理ajax格式的文件上传。Chrome jQuery表单插件跨域安全漏洞?

只要我没有在表单中输入[type = file],一切都会正常工作。

当我添加一个文件输入型的形式,将上传的文件和工作,因为它应该是在Firefox,但我得到这个错误在Chrome:

不安全的JavaScript尝试访问 与网址 http://swbdev.net:8888/inc/ajax/edit_page/ 与网址 http://swbdev.net:8888/site-pages-edit/19d8bb79c95e164f736f324d1b09a33e/1/#add_elements。 域名,协议和端口必须匹配 。

它明确指出域,协议和端口必须匹配。我错过了什么,在同样的错误,它显示了两个URL和域,协议和端口都匹配?

这里是JavaScript调用插件:

<script type="text/javascript"> 
$(document).ready(function() { 
    var options = { 
     success: function(data) { 
      alert(data); 
     }, 
     dataType: 'html', 
     url: '/inc/ajax/edit_page/' 
    }; 
    $('#add_elements_form').ajaxForm(options); 
}); 
</script> 

更多信息:

它现在没有在FireFox为好,不知道为什么它前面的工作,但这里是在Firefox中的错误:

权限遭拒, http://swbdev.net:8888获得 财产Location.href

它指向在插件这一领域的代码:

  function cb() { 
      if (xhr.aborted) { 
       return; 
      } 
      var doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document; 
      if (!doc || doc.location.href == s.iframeSrc) { 
       // response not received yet 
       if (!timedOut) return; 
      } 
      io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false); 
      var ok = true; 

具体地,该行:

if (!doc || doc.location.href == s.iframeSrc 
+0

将document.domain添加到AJAX所在的.php文件中发布解决这个问题,但使解释和解析返回数据更难...... – 2011-04-13 01:30:21

+0

你解决了吗? – IamDeveloper 2011-06-29 15:42:15

+0

是的。我在AJAX查询中调用的PHP文件中添加了JavaScript(document.domain)。 – 2011-07-02 18:28:58

回答

0

绝对怪异。因为输入[type = file]将要求这样做,所以我会尝试将整个事件设置为“POST”。当然,它应该工作混合,但试试这个。

$(document).ready(function() { 
    var options = { 
     success: function(data) { 
      alert(data); 
     }, 
     dataType: 'html', 
     type: 'POST', // <-- This was added 
     url: '/inc/ajax/edit_page/' 
    }; 
    $('#add_elements_form').ajaxForm(options); 
}); 
+0

不幸的是,这没有轴承...谢谢你。 – 2011-04-13 00:47:18

2

我最近遇到了与jquery文件上传相同的问题。错误与David B相同

“不安全的JavaScript尝试访问来自帧的URL为http://swbdev.net:8888/inc/ajax/edit_page/的帧,URL为http://swbdev.net:8888/site-pages-edit/19d8bb79c95e164f736f324d1b09a33e/1/#add_elements。域,协议和端口必须匹配。

在我的情况下,调用页面url和文件上传url被指向xxx.mydomain.com,但是当调用页面被加载时,一个javascript将document.domain设置为mydomain.com并导致错误。在调用页面加载后检查document.domain,显示问题并通过删除xxx.mydomain.com中的document.domain行来修复。