MarkLogic xdmp.http * поддержка нескольких Set-Cookie в заголовке ответа - PullRequest
1 голос
/ 11 апреля 2019

Похоже, что функции xdmp.http* (xdmp.httpGet, xdmp.httpPost и т. Д.) В JavaScript MarkLogic на стороне службы не поддерживают множественные 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-получить ( '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>

1 Ответ

1 голос
/ 15 апреля 2019

JSON может представлять только одно поле для имени. Парсер явно работает. Поддержка многозначных заголовков http в Json отсутствует. Есть много способов сделать это, но все это будет внутренним исправлением. Вы можете попробовать вызвать xdmp.eval и использовать версию xquery с результатами xml, затем прочитать xml или преобразовать в json в более подходящий формат.

...