"sharing" 使用多个 http 客户端时的令牌 cookie

"sharing" token cookie when using several http clients

我正在编写一个 VueJS 应用程序(因此它可以在浏览器上运行!)

我使用 Axios 进行大量休息 api 调用,但在流式传输方面,Axios 只提供一些文件流功能,而不是 stream-http 提供的功能. 所以我正在尝试使用 stream-http 以某种流模式管理长时间休息 api 调用。

现在问题:

当我登录时,我使用 axios 并从服务器接收令牌 cookie。对 axios 的后续调用(使用 withCredential 选项)将 cookie 发送回服务器 ==> 它有效。服务器端的跟踪:

>headers { host: 'localhost:4000',
  'user-agent':
   'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:89.0) Gecko/20100101 Firefox/89.0',
  accept: 'application/json, text/plain, */*',
  'accept-language': 'fr-FR,fr;q=0.5',
  'accept-encoding': 'gzip, deflate',
  'access-control-allow-origin': '*',
  origin: 'http://localhost:8080',
  dnt: '1',
  connection: 'keep-alive',
  referer: 'http://localhost:8080/',
  cookie:
   'token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE2MjQxMjExMjEsImV4cCI6MTYyNDEyNDcyMX0.YaBZGlEC1MT-bMaDunHIEHTzLA4R9DLmq1WCk45cs9I',
  pragma: 'no-cache',
  'cache-control': 'no-cache' } 

但是 当我使用 stream-http 调用 rest 端点时,cookie 没有被发送。痕迹:

>headers { host: 'localhost:4000',
  'user-agent':
   'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:89.0) Gecko/20100101 Firefox/89.0',
  accept: '*/*',
  'accept-language': 'fr-FR,fr;q=0.5',
  'accept-encoding': 'gzip, deflate',
  'access-control-request-method': 'POST',
  'access-control-request-headers': 'access-control-allow-origin,content-type,set-cookie',
  referer: 'http://localhost:8080/',
  origin: 'http://localhost:8080',
  dnt: '1',
  connection: 'keep-alive',
  pragma: 'no-cache',
  'cache-control': 'no-cache' } 

由于无法在浏览器中访问 javascript 中的令牌(安全模式阻止它),我无法在 stream-http 调用中强制使用它。 如何处理?

出现:

  1. withCredential 在 stream-http
  2. 中默认设置为 false
  3. 'http' 模块中的 RequestOptions(如果您使用打字稿)不包含 withCredential 字段

所以我删除了 request() 选项的类型 RequestOptions 并在选项中添加了 withCredential: true 然后它起作用了