2014-10-02 193 views
3

我在我的ColdFusion代碼下面的代碼工作:忽略SSL證書錯誤與Wget的

<cfexecute name="curl" arguments = "https://myPath/myFile.xlsx -k" timeout="10" variable="test" /> 
<cfdump var="#test#" /> 

此使用cURL從指定的路徑下載一個Excel文件,並將其轉儲到瀏覽器,它工作正常。

但是,我無法得到與Wget一樣的工作。

首先我想:

<cfexecute name="wget" arguments = "https://myPath/myFile.xlsx" timeout="10" variable="test" /> 
<cfdump var="#test#" /> 

這將返回一個空字符串。看來我們需要使用相當於cURL的「-k」作爲Wget,以告訴它忽略SSL證書錯誤。所以,我想:

<cfexecute name="wget" arguments = "--no-check-certificate https://myPath/myFile.xlsx" timeout="10" variable="test" /> 
<cfdump var="#test#" /> 

這給了我下面的結果:

Usage: wget [OPTION]... [URL]... Try `wget --help' for more options. 

我如何使用wget cfexecute內下載Excel文件,忽略SSL證書錯誤?

編輯:

運行wget --no-check-certificate "https://myPath/myFile.xlsx"直接在命令行工作。

+0

如果從命令行運行,似乎排除我的想法,即wget未編譯SSL支持。我注意到你在給出的命令行示例中引用URL的方式。它沒有這些工作嗎?我期望它會,但它們是我可以看到的與cfexecute之間的一個區別。 – 2014-10-03 11:26:54

+0

另一種可能性 - 你確定命令行和CF使用的是相同版本的wget嗎?也許把可執行文件的完整路徑作爲一個雙重檢查? – 2014-10-03 11:57:17

+0

路徑如何? CF真的知道從哪裏得到wget?請嘗試在您的wget實例中使​​用顯式完整路徑啓動CF中的wget。 – Konstantin 2015-07-04 16:02:51

回答

2

從wget的手冊頁(http://linux.die.net/man/1/wget

「HTTPS(SSL/TLS)選項

爲了支持加密的HTTP(HTTPS)下載,Wget的必須與外部SSL庫,目前OpenSSL的編譯。如果Wget編譯時沒有SSL支持,則這些選項都不可用。「

您可能需要檢查您使用的wget版本是否支持SSL。

可以cfhttp做你需要的嗎?

https://wikidocs.adobe.com/wiki/display/coldfusionen/cfhttp

如果您使用的是自簽名證書,你可以把它添加到您的JVM的密鑰存儲,以避免證書錯誤。