【问题标题】:<cfhttp> to download a remote .csv file in ColdFusion<cfhttp> 在 ColdFusion 中下载远程 .csv 文件
【发布时间】:2018-09-25 21:11:24
【问题描述】:

我正在尝试使用 ColdFusion(2016 版)在远程服务器位置下载 .csv 文件。我使用 cfhttp 标签执行此操作,但我不断收到以下错误:

401 UNAUTHORIZED

我与远程服务器的服务器管理员核实了我的域名、用户名和密码是否正确,并且管理员确认了这一点。我在 SO 上找不到类似的东西,因此发布了这个问题。希望有人能帮帮我。

PS:我无权访问 ColdFusion 管理员,因为它由单独的团队托管。

以下是我的代码(为安全起见,将实际值替换为虚拟数据):

  <cfhttp  url="https://xxx.yyy.com/abcd/xyz/myfolder/myFile.csv">
    <cfhttpparam type="header" name="Authorization"  
        value="Basic #ToBase64("MydomainName\Myuserid:Mypassword")#" />
  </cfhttp>
  <cfdump  var="#cfhttp.filecontent#" label="CSV file content">
  <cfabort>

【问题讨论】:

  • 托管 .csv 文件的 Web 服务器需要配置为提供 .csv 文件。你有信心吗?
  • Redtopia - 是的,如果我在浏览器中输入 url,我可以打开 csv 文件,这意味着服务器配置为提供 csv 文件。
  • 是https连接吗? auth 标头的格式是否正确?编辑:401 表示您没有正确登录。
  • @Shawn - 我能够使用 https 成功连接到具有相同 csv 文件的不同远程位置;这只是我遇到问题的远程服务器。

标签: coldfusion cfml cfhttp coldfusion-2016 cfhttpparam


【解决方案1】:

可能是您的身份验证字符串错误。为了避免混淆和调试时,我会建议这样的事情:


<cfset myDomainName = "MydomainName" />
<cfset myUserId = "Myuserid" />
<cfset myPassword = "Mypassword" />

<cfset authString = "Basic " & ToBase64('#myDomainName#' & '\' & '#myUserId#' & ':' & '#myPassword#') />

<cfhttp  url="https://xxx.yyy.com/abcd/xyz/myfolder/myFile.csv">

  <cfhttpparam type="header" name="Authorization"  
        value="#authString#" />

</cfhttp>

<cfdump  var="#cfhttp.filecontent#" label="CSV file content">
<cfabort>

我希望这会有所帮助。

【讨论】:

  • 我错误地使用了不同的 url(有效),它读取了文件。使用正确的 url 得到相同的 401 Unauthorized 错误。
  • @RogerDodger 该 URL 是在不同的域上还是不是 HTTPS?
  • @Shawn - 这是 https,因为当我在浏览器中输入完整的 url 时,我可以毫无问题地访问 csv 文件;域名与网址不同 - 这应该不是问题,对吗?
  • 您可以从浏览器访问https://xxx.yyy.com/abcd/xyz/myfolder/myFile.csv 吗?从 ColdFusion 服务器上的浏览器怎么样?听起来您可能需要将证书导入 CF。
  • 我无法访问 CF 服务器,因为它是在外部托管的;导入证书不是我的选择。我现在切换到 cfsharepoint 看看我是否有任何运气。
猜你喜欢
  • 1970-01-01
  • 2020-06-04
  • 1970-01-01
  • 2014-11-06
  • 2013-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多