Yêu cầu POST gốc sau đây, với loại nội dung của dữ liệu nhiều phần/biểu mẫu và chỉ các tiêu đề đơn giản được xem trước. Theo thông số kỹ thuật của W3C, trừ khi tôi đọc sai, nó không nên được xem trước. Tôi đã xác nhận điều này xảy ra trong Chrome 27 và Firefox 10.8.3. Tôi chưa thử nghiệm bất kỳ trình duyệt nào khác.Yêu cầu CORS được xem trước, nhưng có vẻ như không phải là
Sau đây là các tiêu đề yêu cầu, vv:
Request URL:http://192.168.130.135:8081/upload/receiver
Request Method:POST
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:27129
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryix5VzTyVtCMwcNv6
Host:192.168.130.135:8081
Origin:http://192.168.130.135:8080
Referer:http://192.168.130.135:8080/test/raytest-jquery.html
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.37 Safari/537.36
Và đây là OPTIONS (preflight) yêu cầu:
Request URL:http://192.168.130.135:8081/upload/receiver
Request Method:OPTIONS
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:origin, content-type
Access-Control-Request-Method:POST
Connection:keep-alive
Host:192.168.130.135:8081
Origin:http://192.168.130.135:8080
Referer:http://192.168.130.135:8080/test/raytest-jquery.html
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.37 Safari/537.36
Các spec dường như khá rõ ràng:
- Chỉ simple headers : CHECK
- Chỉ simple methods : KIỂM TRA
UPDATE: Dưới đây là một số mã client-side đơn giản mà sẽ tái sản xuất này:
var xhr = new XMLHttpRequest(),
formData = new FormData();
formData.append('myfile', someFileObj);
xhr.upload.progress = function(e) {
//insert upload progress logic here
};
xhr.open('POST', 'http://192.168.130.135:8080/upload/receiver', true);
xhr.send(formData);
Có ai biết tại sao điều này đang được preflighted?
Đó là một tìm kiếm tuyệt vời! Mã lạ cho mã phía máy khách của nó để kích hoạt một preflight; không có gì trong spec về điều đó. Ngoài ra nhận xét không làm cho mọi thứ rõ ràng hơn. Tôi sẽ khuyên bạn nên đưa nó lên trên bảng WebKit để làm rõ. – monsur
@monsur Tôi nghi ngờ logic này không bị giới hạn đối với Webkit. Tôi cũng gặp phải vấn đề tương tự khi sử dụng Firefox. Tôi chưa thử nghiệm IE10. Tôi cũng dự định xem qua nguồn Firefox và xem liệu tôi có thể xác nhận sự nghi ngờ của mình hay không. –
Bạn có thể cập nhật câu hỏi ban đầu để bao gồm mã JavaScript phía máy khách mà bạn đang sử dụng để thực hiện yêu cầu này không? Điều đó sẽ giúp đưa mọi thứ vào bối cảnh. – monsur