gpt4 book ai didi

javascript - 使用 unicode 时 XMLHttpRequest 主体被 chop

转载 作者:行者123 更新时间:2023-12-03 10:02:26 25 4
gpt4 key购买 nike

当在正文中使用表情符号时,我遇到 XMLHttpRequest chop json 编码消息正文的问题。

var emoji = '"\u2764\uFE0F"';

var data = {
id: messageid, time: new Date(),
layout: { 'type': "message", title: emoji, body: emoji, largeIcon: "http://site/icons/icon.png", foregroundColor: "#445566", backgroundColor: "#222222" },
createNotification: {
layout: { 'type': "genericNotification", title: emoji, subtitle: emoji, largeIcon: "http://site/icons/icon.png" }
}
};

jsonenc = JSON.stringify(data);

console.log(jsonenc) //displays data fine.

var request = new XMLHttpRequest();
request.open('PUT', dict.url, true);
request.setRequestHeader('Content-Type', 'application/json;charset=UTF-16');
request.setRequestHeader('X-User-Token', dict.token);
request.setRequestHeader("Content-length", data.length);

request.send(dict.data);

如果我console.log json数据,数据是完整长度的,但是如果我在mitmproxy下查看请求,它会被这样切断:

{"id":"messageid-123456","time":"2015-05-29T03:43:17.566Z","layout":{"type":"message","title":"\"......\"","body":"\"......\"","largeIcon":"http://site/icons/icon.png","foregroundColor":"#445566","backgroundColor":"#222222"},"createNotification":{"layout":{"type":"genericNotification""title":"\"......\"","subtitle":"\"......\"","largeIcon":"http://site/icons/ic

最佳答案

request.setRequestHeader('Content-Type', 'application/json;charset=UTF-16');

application/json 媒体类型没有 charset 参数。如果有的话,UTF-16 将是错误的选择。当 XMLHttpRequest 发送 JS String 时,它会将其编码为 UTF-8。

request.setRequestHeader("Content-length", data.length);

这没有任何作用。 XMLHttpRequest 始终根据您发送的数据长度填充 Content-Length 并忽略此调用。如果不是,data.length 将是错误的值,因为这是 UTF-16 代码单元的长度,但 Content-Length 是以字节为单位测量的。

if I look at the request under mitmproxy, it's cut off as such:

这似乎是 mitmproxy 的用户界面的问题。

"title":"\"......\""

U+2764,U+FE0F 被编码为 UTF-8 作为字节 0xE2,0x9D,0xA4,0xEF,0xB8,0x8F。 mitmproxy 仅显示 ASCII 流数据,而不尝试以任何其他编码方式进行解码,因此它将每个顶部位设置字节显示为占位符 .

关于javascript - 使用 unicode 时 XMLHttpRequest 主体被 chop ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30521191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com