Tôi đã thử cả những điều riêng:XMLHttpRequest/ajax thiết Content-Type
lưu ý: url là một biến chứa một url https và jsonString chứa một chuỗi json hợp lệ
var request = new XMLHttpRequest();
try{
request.open("POST", url);
request.setRequestHeader('Accept', 'application/json');
request.send(jsonString);
} catch(e) {
alert(e);
}
và
var options = {
type: "POST",
url: url,
dataType: "json",
data: jsonString,
accept: "application/json"
};
$.ajax(options)
Sự cố là hệ thống chúng tôi đang đăng để yêu cầu Tiêu đề loại nội dung có giá trị "application/json".
Với cách thức hiện tại, phương pháp được sử dụng là POST, tiêu đề Chấp nhận là "application/json" và Content-Type mặc định là "application/x-www-form-urlencoded; charset = UTF- 8 "
Trong ví dụ đầu tiên, nếu request.setRequestHeader ('Content-Type', 'application/json'); được thêm 1 dòng ở trên hoặc dưới tiêu đề Chấp nhận, phương thức đã sử dụng thay đổi thành OPTIONS, tiêu đề Chấp nhận thay đổi thành "văn bản/html, ứng dụng/xhtml + xml, ứng dụng/xml; q = 0.9, /; q = 0.8" và tiêu đề Loại Nội dung biến mất như thể nó không được nhìn thấy.
Trong ví dụ thứ hai, nếu contentType: "application/json" được thêm vào bất kỳ đâu trong các tùy chọn, điều tương tự cũng xảy ra trong ví dụ đầu tiên.
Cách thích hợp để đặt tiêu đề Kiểu nội dung trong ajax hoặc XMLHttpRequest là gì?
Chỉnh sửa: Tôi nên thêm điều đó bằng cách sử dụng plugin khách hàng phần còn lại firefox, chuỗi json, url và chấp nhận và tiêu đề loại nội dung đều hoạt động tốt. Chúng tôi dường như không thể có được tiêu đề nội dung được đặt trên trang của chính chúng tôi.
Bạn có ví dụ về jsfiddle? Không bao giờ sử dụng đối tượng XMLHttpRequest trước đây nhưng thiết lập cài đặt contentType thành "application/json" sẽ hoạt động cho jquery. Tôi cũng không nghĩ rằng có một thiết lập "chấp nhận". Ngoài ra, yêu cầu preflight OPTIONS xảy ra khi thực hiện cuộc gọi tên miền chéo. Đó là những gì bạn đang làm? – georaldc
Ý tôi là, preflight OPTIONS xảy ra khi thực hiện cuộc gọi tên miền chéo với giá trị loại nội dung khác với giá trị mặc định "application/x-www-form-urlencoded; charset = UTF-8" với JQuery.ajax() – georaldc