Вы находитесь на правильном пути. Настройка файла cookie выполняется с использованием информации заголовка возврата, как показано в MDN Reference .
Чтобы манипулировать заголовком ответа в Jolie, вам нужно работать на узле .addHeader конфигурации http-порта. Вот мой код
interface MyInterface {
RequestResponse:
login(undefined)(undefined)
}
inputPort MyPort {
Location: "socket://localhost:8000"
Protocol: http {
.debug= true;
.debug.showContent= true;
.addHeader.header[0] = "Set-Cookie";
.addHeader.header[0].value->cookieCommand
}
Interfaces: MyInterface
}
execution{ concurrent }
main{
[login(request)(response){
//doing something to control my credatiol
cookieCommand = "yummy_cookie=myCookieValue "
}]
}
Как вы читаете этот код
.addHeader.header[0] = "Set-Cookie";
.addHeader.header[0].value->cookieCommand
эта часть добавляет к заголовку ответа заголовок "Set-Cookie", который в качестве значения будет иметь переменную cookieCommand;символ -> является псевдонимом структуры
Теперь ваша переменная cookieCommand может быть установлена в любом поведении операции, в моем примере это операция входа в систему
[login(request)(response){
//doing something to control my credatiol
cookieCommand = "yummy_cookie=myCookieValue "
}]
Изображениениже показан результат вызова
, и это результат в браузере
Теперь давайте посмотрим, как обрабатывать входящие куки.Прежде всего, мы можем определить новую операцию op1
interface MyInterface {
RequestResponse:
login(undefined)(undefined),
op1(op1RequestType)(op1ResponseType)
}
в типе запроса, нам нужно добавить новый узел, который будет содержать значение cookie нашего приложения
type op1RequestType:void{
.cookieValue:string
}
Затем мынеобходимо установить соответствие между значением cookie, полученным Http inputPort и входной переменной операции
inputPort MyPort {
Location: "socket://localhost:8000"
Protocol: http {
.debug= true;
.debug.showContent= true;
.addHeader.header[0] = "Set-Cookie";
.addHeader.header[0].value->cookieCommand;
.osc.op1.cookies.yummy_cookie = "cookieValue"
}
Interfaces: MyInterface
}
, параметр конфигурации порта
.osc.op1.cookies.yummy_cookie = "cookieValue"
читается как osc. (nameOperation).cookies.nameCookie = nameNodeInTheType
Давайте посмотрим на звонок из вашего браузера
и след от операции (Джоли - след )
Надеюсь, это поможет