首页 > 解决方案 > 在 SOAP 标头中设置 Cookie

问题描述

我有一个要求,我需要调用 SOAP Webservice 操作进行登录,并从 SOAP 响应中获取 cookie,并使用 cookie 调用另一个 SOAP 操作来检索一些数据。登录操作响应有一个 cookie ( Set-Cookie ),它看起来像ASP.NET_SessionId=vqjucdxcxrgg5swr0f3z0peb; 路径=/; 仅http;SameSite=松懈

现在我如何将此 cookie 映射到检索操作。我是否映射ASP.NET_SessionId=vqjucdxcxrgg5swr0f3z0peb; 路径=/; 仅http;SameSite=Lax完全或只是ASP.NET_SessionId=vqjucdxcxrgg5swr0f3z0peb或只是vqjucdxcxrgg5swr0f3z0peb。我尝试了所有三个选项,当我调用检索操作时,我得到java.lang.IllegalArgumentException: Port may not be negative error 。如果我做错了什么,请告诉我。我正在使用 Tibco BW 来调用 SOAP 操作。

标签: httpcookiessoap

解决方案


在链接https://en.wikipedia.org/wiki/HTTP_cookie中找到我的问题的答案。请阅读以下内容

设置 cookie 使用 Set-Cookie HTTP 标头设置 Cookie,在 Web 服务器的 HTTP 响应中发送。此标头指示 Web 浏览器存储 cookie 并在将来的请求中将其发送回服务器(如果浏览器不支持 cookie 或禁用了 cookie,则浏览器将忽略此标头)。

例如,浏览器发送它对 www.example.org 网站主页的第一个请求:

GET /index.html HTTP/1.1 主机:www.example.org ... 服务器响应两个 Set-Cookie 标头:

HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie: theme=light
Set-Cookie: sessionToken=abc123; Expires=Wed, 09 Jun 2021 10:18:14 GMT

... 服务器的 HTTP 响应包含网站主页的内容。但它也指示浏览器设置两个 cookie。第一个“主题”被认为是会话 cookie,因为它没有 Expires 或 Max-Age 属性。会话 cookie 旨在在浏览器关闭时被浏览器删除。第二个,“sessionToken”,被认为是一个持久性 cookie,因为它包含一个 Expires 属性,该属性指示浏览器在特定日期和时间删除 cookie。

接下来,浏览器发送另一个请求以访问网站上的 spec.html 页面。此请求包含一个 Cookie HTTP 标头,其中包含服务器指示浏览器设置的两个 cookie:

GET /spec.html HTTP/1.1
Host: www.example.org
Cookie: theme=light; sessionToken=abc123

… 这样,服务器就知道这个请求和上一个请求有关。服务器将通过发送请求的页面进行响应,可能在响应中包含更多 Set-Cookie 标头,以便添加新的 cookie、修改现有的 cookie 或删除 cookie。

服务器可以通过在响应页面请求时包含 Set-Cookie 标头来修改 cookie 的值。然后浏览器用新值替换旧值。

Cookie 属性

除了名称和值之外,cookie 还可以具有一个或多个属性。浏览器在对服务器的请求中不包含 cookie 属性——它们只发送 cookie 的名称和值。浏览器使用 Cookie 属性来确定何时删除 cookie、阻止 cookie 或是否向服务器发送 cookie。


推荐阅读