簡體   English   中英

Node.js中的Google GAX / gRPC不適用於HTTP / S代理

[英]Google GAX / gRPC in Node.js Does Not Work With HTTP/S Proxy

我正在嘗試從Google的Dialogflow v2 Node.js SDK中獲取Dialogflow SDK示例。 我正在使用node.js v8.10.0和dialogflow node.js SDK版本0.5.0 嘗試從公司http / s代理后面運行“檢測意圖”示例時遇到此問題:

Auth error:Error: write EPROTO 140163148314432:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:../deps/openssl/openssl/ssl/s23_clnt.c:827

我在這里碰到過這篇文章: https : GRPC_PROXY_EXP看起來非常面向Java,但是它建議將環境變量GRPC_PROXY_EXP進行設置以使gRPC調用在代理后面工作。 我在從中運行節點的shell中設置了環境變量,並使用export GRPC_PROXY_EXP="$https_proxy"嘗試再次運行該示例,但存在相同的問題。 請注意,我的$http_proxy$https_proxy變量是相同的。

當不使用代理連接到wifi網絡時,同一示例在同一台計算機上工作。 tcpdump數據包分析表明有兩個正在使用的TCP連接(不同的端口):一個有效(首先打開),另一個無效,並且在代理中遇到錯誤。 當第二個連接需要首先進行身份驗證並將CONNECT消息發送給HTTPS代理時(如第一個TCP連接那樣),它將立即開始CLIENT_HELLO TLS消息。

我是否缺少某些東西,或者這是dialogflow(google-gax / grpc)節點庫的問題?

在幾個Google節點項目問題討論板上反復討論之后,問題原來是-使用HTTPS over HTTP隧道時gtoken API直接使用axios npm軟件包的准備僅是使用HTTPS。 (與URL中的協議一致)。

使長話短說; Dialogflow 0.8.2包含此問題的修復程序,因為它的傳遞依賴項包括使用gaxios而不是axiosgtoken軟件包的版本。 gaxiosgoogle-gax庫中其他地方使用的軟件包,用於建立HTTP / S連接(這是代理感知的,並通過HTTP用例處理HTTPS)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM