[英]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
而不是axios
的gtoken
軟件包的版本。 gaxios
是google-gax
庫中其他地方使用的軟件包,用於建立HTTP / S連接(這是代理感知的,並通過HTTP用例處理HTTPS)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.