在这个问题中使用 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 个小时,我 >< 几乎要撕掉我自己的脸了....!!
提前致谢,