FineUploader CORS选择工作(FineUploader CORS selectivel

2019-10-19 06:01发布

我一直在与FineUploader成功,并有一个要求,保存到不同的子域 - 在example.com,endpoint.php HTML代码在upload.example.com。

我有它每一次完美的Safari工作上传几个小文件。 同样是这些小文件总是上传的Firefox和Chrome在Mac(最新版本为2014年1月),但我只用Firefox和Chrome在Mac上获得成功的反馈选择性。 它总是有“处理...”或百分比“61%”,但该文件在服务器上。

当我把HTML代码上upload.example.com,它工作正常。 我使用FineUploader自定义生成(商业支持)v4.2.2,我已经更新了预检响应后端endpoint.php等的问题是,POST请求无限期挂起,无论什么服务器设置为。 我甚至创造了一个假的JSON响应说什么也没做,但与JSON字符串成功响应。

...
else if ($method == "POST") {
    handleCorsRequest();
    header("Content-Type: text/plain");
    echo '{"success":true,"uuid":"99999a18-a6c3-456e-bd06-e492f8a290c0","uploadName":"image1.jpg"}';
}
...

我想这可能是JSONP需要读回响应,并且没有FineUploader不知道是怎么回事。 然而,FineUploader并不至于我可以告诉发送回调场。

有任何想法吗? 快乐澄清。 下面是挂起无限期飞行前请求,响应和POST的一个例子。

瑞安

REQUEST ACCORDING TO PROXY:
Referer: http://example.com/?folder=TestFolder&id=1051&jobname=Test
Cache-Control: no-cache
Connection: keep-alive
Origin: http://example.com
Accept-Language: en-US,en;q=0.8
Accept: */*
Content-Length: 51729
Host: upload.example.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryxBA8idxO6Luv7Ipc
Accept-Encoding: gzip,deflate,sdch
X-Requested-With: XMLHttpRequest

RESPONSE ACCORDING TO PROXY, RETURN CODE 200:
Date: Fri, 24 Jan 2014 19:14:38 GMT
Server: Apache
Content-Type: text/plain
Connection: Keep-Alive
MS-Author-Via: DAV
Access-Control-Allow-Origin: *
X-Powered-By: PHP/5.3.15
Content-Length: 88
Keep-Alive: timeout=15, max=99

RESPONSE TEXT ACCORDING TO PROXY:
{"success":true,"uuid":"f0365869-312b-4080-bc30-1792e24fe366","uploadName":"image1.jpg"}

POSTED DATA:
------WebKitFormBoundaryxBA8idxO6Luv7Ipc
Content-Disposition: form-data; name="qquuid"

f0365869-312b-4080-bc30-1792e24fe366
------WebKitFormBoundaryxBA8idxO6Luv7Ipc
Content-Disposition: form-data; name="qqfilename"

image1.jpg
------WebKitFormBoundaryxBA8idxO6Luv7Ipc
Content-Disposition: form-data; name="qqtotalfilesize"

51200
------WebKitFormBoundaryxBA8idxO6Luv7Ipc
Content-Disposition: form-data; name="qqfile"; filename="image1.jpg"
Content-Type: image/jpeg

{binary data}
------WebKitFormBoundaryxBA8idxO6Luv7Ipc--

Answer 1:

因为它看起来像您发送证书时,设置Access-Control-Allow-Origin头部到请求的来源(显然不是生产一个好主意),而不是“*”。

如果你没有sendCredentials设置为true精细上传,那么你可以有一个通配符Access-Control-Allow-Origin

据MDN :

[...]响应一个资格的请求时,服务器必须指定一个域,而不能使用野生梳理。 访问控制允许来源:*如果标题被通配符上面的例子将失败。

另外,从这个答案来源: CORS:当凭据标志是真的不能在访问控制允许来源使用通配符



文章来源: FineUploader CORS selectively working