【发布时间】:2013-04-15 14:09:57
【问题描述】:
在this question 中使用pluploader 失败后,我现在正在尝试FineUploader。
阅读 CORS 后,我在我的 IIS6 服务器上实现了各种标头。
似乎发生的事情是我的脚本触发了第一个 (preflight) 授权请求,但失败了,但 Chrome 允许第二个 (standard) 请求发送 - Firefox 不允许。我认为这实际上是 Chrome 的一个错误,但至少它使我能够确定我的脚本可能正常工作。
这是在 Chrome 和 FF 中看到的第一个(预检)请求:
OPTIONS /frog/LOTS/upload/php.php HTTP/1.1
Host: staff.curriculum.local
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/14.0.1
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
Connection: keep-alive
Origin: http://frogserver.curriculum.local
Access-Control-Request-Method: POST
Access-Control-Request-Headers: cache-control,x-requested-with
Pragma: no-cache
Cache-Control: no-cache
Access-Control... 标头是我添加到 IIS 中的标头。
这是我的响应标头:
HTTP/1.1 403 Forbidden
Content-Length: 1758
Content-Type: text/html
Server: Microsoft-IIS/6.0
x-powered-by: ASP.NET
Access-Control-Allow-Origin: http://frogserver.curriculum.local
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Cache-Control
Access-Control-Allow-Methods: OPTIONS, GET, POST
Access-Control-Expose-Headers: Origin, X-Requested-With
Date: Mon, 22 Apr 2013 15:19:20 GMT
我尝试并排比较这两者,但找不到任何会导致 preflight 请求返回 403 Forbidden 错误的标头。
我没有包含我的 PHP 源代码,因为它有很多代码。可以说它确实在 Chrome 中工作并且文件已正确上传,因此脚本应该是正确的。唯一值得一提的是,我的脚本开头有一个header("Content-Type: text/plain");。将其更改为 text/html 对 Chrome 和 FireFox 没有任何影响。
JavaScript 非常简单:
$('#jquery-wrapped-fine-uploader').fineUploader({
request: {
endpoint: 'http://staff.curriculum.local/frog/LOTS/upload/php.php'
},
cors: {
expected: true, //all requests are expected to be cross-domain requests
sendCredentials: true //if you want cookies to be sent along with the request
}
});
有人可以帮忙吗?我今天在这个问题上花了 8 个小时,我 >
提前致谢,
【问题讨论】:
-
这对我来说真的不是一个 Fine Uploader 问题。您可能希望将其中一个标签更改为 IIS。 Fine Uploader 根本不涉及(很多)。用户代理发送 OPTIONS(预检)请求,而不是 Fine Uploader。出于某种原因,您的服务器以 403 拒绝此请求。您可能需要查看服务器日志以了解它为何以 403 响应。
-
再一次,为问得好问题+1!
-
@RayNicholus 你是对的,这不是 Fine Uploader 的问题,但我认为说它不相关是错误的。 Fine Uploader 是否确定预检请求发送的标头?
-
@dunc 不,Fine Uploader 不参与预检请求。它完全由用户代理处理。
-
好的@RayNicholus,谢谢。那么,您知道是什么决定了预检请求的标头吗?
标签: php jquery iis http-headers cors