我尝试使用jQuery的ajax()
方法发布一些二进制数据。问题是数据128
被编码为请求正文中的字符串"128"
(不是0xf0
)。
$.ajax({
url: "ajax.php",
type: "post",
data: 128,
contentType: "application/octet-stream",
processData: false,
success: function(data, status, xhr) {
alert(data);
}
});
请求正文(即HTTP标头后的字节)是否必须仅包含ASCII字符?
我对诸如内容类型和传输编码之类的HTTP概念感到困惑。我看到的是,大多数内容无论是最初是文本还是二进制(例如,图像字节都是base64编码的),都编码为ASCII字符。内容类型application/octet-stream
似乎允许请求主体中包含二进制数据,但是如何解释以上示例?
答案 0 :(得分:1)
您必须传递一种可以很好地处理二进制数据的类型,例如Uint8Arrayar
var x = new Uint8Array(1);
x[0]=128;
$.ajax({
url: "ajax.php",
type: "post",
data: x,
contentType: "application/octet-stream",
processData: false,
success: function(data, status, xhr) {
alert(data);
}
});