我在IE9中使用FineUploader时遇到一些奇怪的问题 - 文件上传将通过,按预期在服务器上处理,但是没有responseJSON将传递给complete事件。
我没有做任何特别复杂的代码片段如下:
$('#upload').fineUploader({
debug: true,
button: $('#upload-button'),
uploaderType: 'basic',
request: {
endpoint: '*snip*'
},
multiple: false,
sizeLimit: 4194304,
}).bind('complete', function (event, id, fileName, response) {
/* response doesn't contain anything it should at this point */
})
我的javascript日志中还出现以下错误:
[Fine Uploader 5.0.3] Error when attempting to access iframe during handling of upload response (Access is denied.
虽然我不确定为什么会这样,但再说一遍,我并没有做任何复杂的事情。
我正在MVC4环境中工作,而且我能够非常一致地重现新项目的错误。
在此先感谢,我现在没有想法。
答案 0 :(得分:0)
根据错误消息,您正在进行跨源上传请求。您需要通过确保服务器返回正确的响应来在代码中考虑到这一点。如果您不打算进行跨源上载请求,则需要仔细查看您的请求端点值或您的环境。
在IE9及更早版本中,跨源上传有点棘手。所有这些都在Fine Uploader blog post on CORS中解释。以下是博客中的一些相关信息:
传入的上传请求是通过表单提交发送的 如果请求没有X-Requested-With标头,则隐藏iframe, 或者如果X-Requested-With标头的值不是 “XMLHttpRequest的”。处理跨域iframe / form-submit-initiated 上传(在不支持File API的浏览器中)有点棘手 对于Fine Uploader。我尽力让它变得尽可能简单 但对于开发人员/集成商而言。您对基于iframe的回复 请求(如使用IE8或IE9时所需),看起来非常 与您的正常响应类似,但它必须具有Content-Type 标题值为“text / html”,您的响应必须导入帮助程序 javascript文件通过& ltscript& gt标签紧接在你之前 有效的JSON响应。例如:
"{\"success\": true, \"uuid\":\"9da17ad5-ad6a-40cd-81b5-226e837db45b\"}<script src=\"http://<YOUR_SERVER_DOMAIN>/iframe.xss.response-<VERSION>.js/"></script>"
所有跨域iframe启动的响应必须以脚本结束 上面的标记,有效的JSON部分必须包含的UUID 相关文件。请注意,您必须托管iframe.xss.response.js 文件位于可访问的服务器上,并在&amp; ltscript&amp; gt标记中引用它 因此。当您的回复内容返回到 由Fine Uploader跟踪的iframe,相关的javascript文件 由上面的脚本标签导入将被执行,并将通过 通过window.postMessage
对上传者的响应的JSON部分