"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 调用中强制使用它。
如何处理?
出现:
- withCredential 在 stream-http
中默认设置为 false
- 'http' 模块中的 RequestOptions(如果您使用打字稿)不包含 withCredential 字段
所以我删除了 request() 选项的类型 RequestOptions 并在选项中添加了 withCredential: true 然后它起作用了
我正在编写一个 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 调用中强制使用它。 如何处理?
出现:
- withCredential 在 stream-http 中默认设置为 false
- 'http' 模块中的 RequestOptions(如果您使用打字稿)不包含 withCredential 字段
所以我删除了 request() 选项的类型 RequestOptions 并在选项中添加了 withCredential: true 然后它起作用了