cookies - MarkLogic xdmp.http* 支持响应标头中的多个 Set-Cookie
问题描述
MarkLogic Servie 端 JavaScript 中的xdmp.http*
函数(xdmp.httpGet
等xdmp.httpPost
)似乎不支持多个Set-Cookie
响应标头——只返回一个 cookie
xdmp.httpGet(' https://httpbin.org/response-headers?Set-Cookie=a&Set-Cookie=b ')
{
"code": 200,
"message": "OK",
"headers": {
"access-control-allow-credentials": "true",
"access-control-allow-origin": "*",
"content-type": "application/json",
"date": "Thu, 11 Apr 2019 19:12:55 GMT",
"server": "nginx",
"set-cookie": "b", // only one cookie
"content-length": "111",
"connection": "keep-alive"
}
}
相比之下,等效的 xdmp:http-* 函数表现正确:
xdmp:http-get(' https://httpbin.org/response-headers?Set-Cookie=a&Set-Cookie=b ')
<response xmlns="xdmp:http">
<code>200</code>
<message>OK</message>
<headers>
<access-control-allow-credentials>true</access-control-allow-credentials>
<access-control-allow-origin>*</access-control-allow-origin>
<content-type>application/json</content-type>
<date>Thu, 11 Apr 2019 19:21:40 GMT</date>
<server>nginx</server>
<set-cookie>a</set-cookie> // both cookies
<set-cookie>b</set-cookie>
<content-length>111</content-length>
<connection>keep-alive</connection>
</headers>
</response>
解决方案
JSON 每个名称只能代表一个字段。解析器显然正在工作。
似乎缺少对 JSON 中多值 http 标头的支持。有很多方法可以完成,但都是内部修复。
您可以尝试调用xdmp.eval
并使用带有 XML 结果的 XQuery 版本,然后读取 XML 或以更合适的格式转换为 JSON。
推荐阅读
- java - 为什么 .length 给我返回语句的长度而不是用户输入?
- php - 在 Codeigniter 中生成 URL 安全的加密 id
- excel - 防止Word模板被保存过来;Word doc 是从 Excel 生成的
- haskell - 通过 Nat-kind 重叠实例
- angular - 在 Angular 中使用 ngIf 但我得到 Bindings cannot contain assignments
- rust - Piston 应用程序在几分钟后因内存分配错误而崩溃
- python - Selenium:通过存在_of_element_located() 聚合Selenium
- python - 尝试读取 xpt 文件时,如何修复 Python 中的“str”对象没有属性“tell”错误?
- android - (Android) 使用搜索和默认书签打开 Google 地图?
- python - Python:按条件绘制多个正/负条形图