Domino 访问服务 POST 限于特定大小
Domino Access Services POST limited to specific size
最近,我开始使用 Domino Access Services。到目前为止,它工作正常:我可以使用我的 GET 和 POST 请求。
但我注意到一个问题:当发布一个大字符串(我假设 100-200kb+)时,数据字段将是空的,即使之前有其他东西在那里。作为响应,我得到一个状态代码 200。如果我手动将这个大字符串插入数据字段,它就会被保存。我可以毫无问题地使用 GET 请求访问它。数据字段来自“富文本”类型。
我的 POST-Request:(我也用 Postman 试过;它适用于小字符串)
var largeString = "any large string";
var data = JSON.stringify({
"description": largeString
});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
var unid = "#{javascript:document1.getDocument().getUniversalID();}";
xhr.open("POST", "./api/data/documents/unid/" + unid);
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("x-http-method-override", "PATCH");
xhr.setRequestHeader("cache-control", "no-cache");
xhr.send(data);
我想知道:POST 有大小限制吗?对于更大的请求,我会错过任何 headers 吗?
我认为您必须更改几个位置的最大值。
在您服务器的服务器文档中(在names.nsf中)您可以设置发送到服务器的请求内容的最大大小。默认值为 10,000 KB。设置为 0 则没有限制。
请参阅:服务器文档 > Internet 协议 > HTTP > 在右栏的底部。
如果您正在使用 Internet 站点文档(您应该这样做),请更改字段“最大 POST 数据”。默认值也是 10,000 KB。 0 = 无限制。
请参阅:Internet 站点 > Domino Web Engine >“POST 数据”部分。
- 最后,在应用程序 (NSF) 的 XSP 属性中,还有一个文件上传的最大大小设置。不确定您是否还需要更改该值,但它可能是相关的。
更改服务器文档中的设置需要重新启动服务器。
根据您的示例,您将发送以下 JSON 负载:
{
"description": "any large string"
}
写入文本字段 -- 而不是富文本字段。 Notes 和 Domino 中文本字段的大小肯定有限制。
从技术上讲,您不能使用数据 API 编写 Notes RTF 字段,但可以编写 MIME 字段。尝试发送以下 JSON 负载:
{
"description": {
"type": "multipart",
"content": [
{
"contentType": "text/plain",
"data": "any large string"
}
]
}
写一个 text/plain
部分包裹在 multipart
MIME 字段中。无论 data
属性 的长度如何,它都应该起作用。请记住,MIME 字段不是传统的 Notes Rich Text。在大多数情况下,它可以与富文本互换,但这取决于您对数据的处理方式。
警告:我没有尝试在我的示例中发送确切的负载,但我 99% 确定它应该有效。有关 multipart
数据类型的更多信息,请参阅 Receiving a response body。
最近,我开始使用 Domino Access Services。到目前为止,它工作正常:我可以使用我的 GET 和 POST 请求。 但我注意到一个问题:当发布一个大字符串(我假设 100-200kb+)时,数据字段将是空的,即使之前有其他东西在那里。作为响应,我得到一个状态代码 200。如果我手动将这个大字符串插入数据字段,它就会被保存。我可以毫无问题地使用 GET 请求访问它。数据字段来自“富文本”类型。
我的 POST-Request:(我也用 Postman 试过;它适用于小字符串)
var largeString = "any large string";
var data = JSON.stringify({
"description": largeString
});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
var unid = "#{javascript:document1.getDocument().getUniversalID();}";
xhr.open("POST", "./api/data/documents/unid/" + unid);
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("x-http-method-override", "PATCH");
xhr.setRequestHeader("cache-control", "no-cache");
xhr.send(data);
我想知道:POST 有大小限制吗?对于更大的请求,我会错过任何 headers 吗?
我认为您必须更改几个位置的最大值。
在您服务器的服务器文档中(在names.nsf中)您可以设置发送到服务器的请求内容的最大大小。默认值为 10,000 KB。设置为 0 则没有限制。
请参阅:服务器文档 > Internet 协议 > HTTP > 在右栏的底部。
如果您正在使用 Internet 站点文档(您应该这样做),请更改字段“最大 POST 数据”。默认值也是 10,000 KB。 0 = 无限制。
请参阅:Internet 站点 > Domino Web Engine >“POST 数据”部分。
- 最后,在应用程序 (NSF) 的 XSP 属性中,还有一个文件上传的最大大小设置。不确定您是否还需要更改该值,但它可能是相关的。
更改服务器文档中的设置需要重新启动服务器。
根据您的示例,您将发送以下 JSON 负载:
{
"description": "any large string"
}
写入文本字段 -- 而不是富文本字段。 Notes 和 Domino 中文本字段的大小肯定有限制。
从技术上讲,您不能使用数据 API 编写 Notes RTF 字段,但可以编写 MIME 字段。尝试发送以下 JSON 负载:
{
"description": {
"type": "multipart",
"content": [
{
"contentType": "text/plain",
"data": "any large string"
}
]
}
写一个 text/plain
部分包裹在 multipart
MIME 字段中。无论 data
属性 的长度如何,它都应该起作用。请记住,MIME 字段不是传统的 Notes Rich Text。在大多数情况下,它可以与富文本互换,但这取决于您对数据的处理方式。
警告:我没有尝试在我的示例中发送确切的负载,但我 99% 确定它应该有效。有关 multipart
数据类型的更多信息,请参阅 Receiving a response body。