我有用户提交的文件,我试图以 10 MB 的块上传。我目前正在使用原始 XMLHttpRequest(和 XDomainRequest)将每个单独的切片(File.prototoype.slice
)推送到前端。后端是使用上传模块的 Nginx 。
仅供参考,这里是我如何使用的概要slice
:
element.files[0].slice(...)
我了解跨浏览器前缀方法webkitSlice
等等mozSlice
。
我遇到的问题是实际发出跨域请求。我正在从 上传server.local
到upload.server.local
。在 Firefox 中,options
请求通过正常,然后实际post
失败。在 Chrome 和 Opera 中,options
请求失败并显示
OPTIONS https://URL Resource failed to load
以下是 Firefox 的标头:
请求标头
OPTIONS /path/to/asset HTTP/1.1
Host: upload.server.local:8443
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:18.0) Gecko/20100101 Firefox/18.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Origin: https://server.local:8443
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-disposition,content-type,x-content-range,x-session-id
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
响应标头
HTTP/1.1 204 No Content
Server: nginx/1.2.6
Date: Wed, 13 Feb 2013 03:27:44 GMT
Connection: keep-alive
access-control-allow-origin: https://server.local:8443
Access-Control-Allow-Methods: POST, OPTIONS
Access-Control-Allow-Headers: x-content-range, origin, content-disposition, x-session-id, content-type, cache-control, pragma, referrer, host
access-control-allow-credentials: true
Access-Control-Max-Age: 10000
实际post
请求永远不会离开浏览器。Nginx 访问日志永远不会看到post
. 浏览器出于某种原因将其停止。我如何解开这篇文章被屏蔽的原因?
Chromium 24
Firefox 18
Opera 12.14
我已经在这里验证了所有浏览器都正确支持 CORS 。
通过将我的上传指向https://cors-test.appspot.com/test
,我已经确认问题肯定出在服务器端标头上。