Coldfusion cfhttp返回浏览器可以通过http和https访问的网络url的连接失败

Coldfusion cfhttp返回浏览器可以通过http和https访问的网络url的连接失败,coldfusion,cfhttp,coldfusion-2018,Coldfusion,Cfhttp,Coldfusion 2018,我正在使用cfhttp尝试从我们的一个组织API中提取一些json。当我试图从我们自己的服务器中提取示例json时,代码可以正常工作,但是当我将其指向API本身时,我收到一个连接失败。代码如下: <cfhttp method="get" url="http://[url]/api/menu"> <cfhttpparam type="URL" name="id" value="[guid]"> </cfhttp> <cfset File

我正在使用cfhttp尝试从我们的一个组织API中提取一些json。当我试图从我们自己的服务器中提取示例json时,代码可以正常工作,但是当我将其指向API本身时,我收到一个连接失败。代码如下:

<cfhttp method="get" url="http://[url]/api/menu">
    <cfhttpparam type="URL"     name="id"   value="[guid]">
</cfhttp>
<cfset FileWrite("#application.tempDirPath#/temp.json", CFHTTP.FileContent)>

我已将实际值替换为[url]和[guid]

我曾尝试在的浏览器中访问此url,但效果非常好,这表明我的机器访问该url没有问题。url是我们网络中的一个服务器,只要我在公司VPN上,我就可以访问它

我尝试过的事情:

  • 实时代码应该指向https。我尝试了http和https
  • 我曾尝试在同一个url上点击主页,但这也会导致连接失败,但可以在浏览器中使用
  • 我已经尝试了相同的代码,它可以毫无问题地下载GoogleHTML
  • 我试着重新启动ColdFusion和我的机器
  • 我已尝试通过标题禁用压缩:

    <cfhttp method="get" url="http://[url]/api/menu">
        <cfhttpparam type="header" name="Accept-Encoding" value="deflate;q=0" />
        <cfhttpparam type="header" name="TE" value="deflate;q=0" />
        <cfhttpparam type="URL"           name="id"          value="[guid]">
    </cfhttp>
    
    
    
我没有访问目标服务器的权限。我可以向那些有权获得帮助的人寻求帮助,但他们在这一点上的结论是“这是一个ColdFusion问题”,所以我不确定我能得到多少帮助。这使得我无法检查防火墙规则或用户代理限制;对于如何在本地测试这些东西,我们欢迎提出建议

编辑

根据对这个问题的评论,我确定http只是在该地址重定向到https。因此,我按照在上提供的说明导入证书。完成后,我按照说明验证证书是否已成功导入。然后我重新启动了CF服务器

之后,我再次运行代码,并将cfhttp结构作为一个整体转储到临时文件中。结果是:

<?xml version="1.0" encoding="UTF-8"?>
<STRUCT ID="1">
   <ENTRY NAME="Errordetail" TYPE="STRING">I/O Exception: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target</ENTRY>
   <ENTRY NAME="Mimetype" TYPE="STRING">Unable to determine MIME type of file.</ENTRY>
   <ENTRY NAME="Statuscode" TYPE="STRING">Connection Failure.  Status code unavailable.</ENTRY>
   <ENTRY NAME="Filecontent" TYPE="STRING">Connection Failure</ENTRY>
   <ENTRY NAME="Responseheader" TYPE="STRUCT">
      <STRUCT ID="2" />
   </ENTRY>
   <ENTRY NAME="Text" TYPE="BOOLEAN">true</ENTRY>
   <ENTRY NAME="Charset" TYPE="STRING" />
   <ENTRY NAME="Header" TYPE="STRING" />
</STRUCT>

I/O异常:sun.security.validator.validator异常:PKIX路径生成失败:sun.security.provider.certpath.SunCertPathBuilderException:找不到请求目标的有效证书路径
无法确定文件的MIME类型。
连接失败。状态代码不可用。
连接故障
真的

您的CFHTTP正在调用HTTP,但您的浏览器正在使用HTTPS。服务器是否接受端口80和443上的连接?还可能与更具体的错误消息有关听起来像是证书问题。
http://[url]/
是否重定向到
https://[url]/
<默认情况下,code>cfhttp遵循重定向,可能会命中证书。尝试使用
@haxtbh我已经在我的浏览器和cfhttp上尝试了http和https。两者都在浏览器中工作,在cfhttp中都失败。我也尝试过指定端口443。“连接失败”是cfhttp的filecontent中显示的唯一消息。@Alex您可能是对的。写出完整的cfhttp结构我看到“I/O异常:sun.security.validator.ValidatorException:PKIX路径生成失败:sun.security.provider.certpath.SunCertPathBuilderException:找不到请求目标的有效证书路径”。我回到浏览器,看到一个我以前没有注意到的重定向。我将详细了解导入证书的过程。我看到它在http上不起作用,就下结论说它不是https问题。