【发布时间】:2014-10-15 03:55:06
【问题描述】:
我尝试使用 jQuery Dropzone 将图像上传到 Imgur 或任何其他域,但这不起作用。
这是我的放置区设置:
$("div.dropzone").dropzone
success: -> console.log arguments
paramName: "image"
method: "post"
maxFilesize: 2
url: "https://api.imgur.com/3/upload"
headers:
Authorization: "Client-ID *************"
这不起作用。它说返回码是0。请求标头:
Host: api.imgur.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101 Firefox/31.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Origin: http://my.opencubes.io
Access-Control-Request-Method: POST
Access-Control-Request-Headers: authorization,cache-control,x-requested-with
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
首先你可以看到cient id没有出现:(。但最大的问题是使用的方法是OPTIONS。响应头:
当我尝试将文件上传到我的另一个域时遇到同样的问题(dropzone 位于子域中)
在我看到的控制台中:
Une demande multi-origines (Cross-Origin Request) a été bloquée : la politique « Same Origin » ne permet pas de consulter la ressource distante située sur https://api.imgur.com/3/upload. Ceci peut être corrigé en déplaçant la ressource sur le même domaine ou en activant CORS.
可以翻译的
多源请求被阻止:“同源”策略不允许查看位于https://api.imgur.com/3/upload 的远程资源。这可以通过移动 samin 域上的资源或启用 CORS 来解决。
【问题讨论】:
-
OPTIONS 请求是一个普通请求:用于请求与 CORS 限制相关的权限(有关 CORS 的更多信息,请参见此处:toc-handling-a-not-so-simple-request) . api.imgur.com 是否只有一个请求?你能向我们展示所有请求/响应标头和内容到这个端点的请求吗?另外,检查您的控制台输出,看看是否没有问题。发送的数据是什么?请求中
image名称的值是多少?如果您真的想上传文件,请查看 AJAX 文件上传处理(谷歌)。 -
@pomeh 谢谢。问题是imgur 确实只有一个请求。这是唯一的一个。在控制台中,它说请求多源被阻止,我必须将它移动到同一个域:/。我想使用 Dropzone
-
具体信息是什么?请求来自的确切域名和去向的域名是什么?
-
确实,我在响应中没有看到任何
Access-Control-Allow-Origin标头,因此它可能是相关的...但是无论如何您都无法更改它。这个标题不见了,看起来很奇怪。另外,请确保使用正确的Content-Type和multipart/form-data来处理文件上传。最后,这是我在之前的评论中搞砸的链接:html5rocks.com/en/tutorials/cors/… 看看它以了解 CORS 的工作原理,也许您会在其中找到一些有用的信息。编辑:请求来自的确切域名是什么? -
我的错误。我将请求标头放在我的问题的响应标头中。固定的。域是
my.opencubes.io,它不存在但在我的hosts文件中
标签: javascript cors dropzone.js imgur