我有一个API在我的两个Web服务器之一上运行良好,但在另一个或本地机器上没有运行,而是当我在登录过程中发送https请求时,我的连接失败.
请求非常简单,并且在运行它的三台服务器之一上运行时没有问题.第一个如下:
<cfhttp url="https://accounts.ea.com/connect/auth?response_type=code&client_id=EASFC-web&state=59c5a8f1c4e7a991c1da0b54504c38e45f4d8d78&redirect_uri=http%3A%2F%2Fwww.easports.com%2Ffifa%2Ffootball-club%2Flogin_check&locale=uk&scope=basic.identity+basic.persona+signin+offline " method="GET" result="Stage2" redirect="false">
<cfhttpparam type="header" name="Accept" value="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" />
<cfhttpparam type="header" name="Accept-Encoding" value="gzip, deflate" />
<cfhttpparam type="header" name="Accept-Language" value="en-US, en;q=0.5" />
<cfhttpparam type="header" name="Connection" value="keep-alive" />
<cfhttpparam type="header" name="Host" value="accounts.ea.com" />
<cfhttpparam type="header" name="User-Agent" value="Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36" />
</cfhttp>
Run Code Online (Sandbox Code Playgroud)
我看了一眼,这似乎是一个常见的问题,但这个解决方案没有提供任何乐趣.
我假设有一些我可能会忽略的安全设置?如果有帮助的话,我可以点击页面并在本地计算机上的浏览器中登录.
有人有建议吗?
这是CFDUMP中返回的内容:
Debugging Information
ColdFusion Server Developer 9,0,0,251028
Template /CraigTest/FUT/FIFACPB/logInSearchAccount17.cfm
Time Stamp 09-Dec-13 11:40 AM
Locale English (UK)
User Agent Mozilla/5.0 (Windows NT 6.1; WOW64; …Run Code Online (Sandbox Code Playgroud) 我正在尝试在bitfloor.com上向交易API发出签名请求(这是一个REST API)
Bitfloor给了我:
1)API密钥(即6bd2b780-00be-11e2-bde3-2837371c3c3a)
2)密钥(即oaFz62YpmbWiXwseMUSod53D8pOjdyVcweNYdiab/TSQqxk6IuemDvimNaQoA ==)
以下是Bitfloor提出请求的确切说明:
请求必须是端口443(https)上的HTTPS POST请求.每个请求必须包含所需的标头(如下所列).标头识别,验证和验证您的请求以防止篡改.头
bitfloor-key这是由bitfloor提供的唯一标识您的帐户.(即6bd2b780-00be-11e2-bde3-2837371c3c3a)
bitfloor-sign符号字段是请求正文的sha512-hmac,使用与您的api密钥对应的密钥.
要签署您的请求: base64将密钥解码为原始字节(64字节).将这些字节用于http请求正文的sha512-hmac签名.Base64对签名结果进行编码并发送到此标头字段.
bitfloor-passphrase创建此api密钥时指定的密码.如果忘记,我们无法恢复您的密码.您需要创建一个新的API密钥.
bitfloor-version您感兴趣的资源的api版本.当前唯一有效的值是1
经过整整八个小时的反复试验并反复搜索互联网以获取任何洞察力或信息,以下代码尽可能接近我认为可能在如何正确构建请求的方向,唉,无论我接受什么,我的API都会返回"无效签名".
这是我到目前为止所拥有的......
首先,我在网上找到了这个函数,有人写信给SHA512签名:
<cffunction name="HMAC_SHA512" returntype="binary" access="public" output="false">
<cfargument name="signKey" type="string" required="true">
<cfargument name="signMessage" type="string" required="true">
<cfset var jMsg = JavaCast("string",arguments.signMessage).getBytes("iso-8859-1")>
<cfset var jKey = JavaCast("string",arguments.signKey).getBytes("iso-8859-1")>
<cfset var key = createObject("java","javax.crypto.spec.SecretKeySpec")>
<cfset var mac = createObject("java","javax.crypto.Mac")>
<cfset key = key.init(jKey,"HmacSHA512")>
<cfset mac = mac.getInstance(key.getAlgorithm())>
<cfset mac.init(key)>
<cfset mac.update(jMsg)>
<cfreturn mac.doFinal()>
</cffunction>
Run Code Online (Sandbox Code Playgroud)
我不知道它做了什么,但它似乎工作,没有错误.
这是我对此函数的实现以及我尝试发出请求:注意:"nonce"值是必须与请求一起发送的参数.
<cffunction name="myorders">
<cfset nonce = dateDiff("s",createDateTime(2012,01,01,0,0,0),now())>
<cfset requestbody …Run Code Online (Sandbox Code Playgroud) 我确信我完全搞砸了,但是在Stack Overflow用户的帮助下我得到了这么多,所以非常感谢到目前为止.
我需要将JSON数据POST到远程API.显然,由于SOP问题,我无法使用jQuery,而且远程API不支持JSONP.
我也不想使用任何类型的代理来解决SOP限制.
根据API文档(http://myemma.com/api-docs/),这是他们期望的数据格式(请求和响应数据作为JSON传输):
POST https://api.e2ma.net//123/members/add
{
"fields": {
"first_name": "myFirstName"
},
"email": "email@domain.com"
}
Run Code Online (Sandbox Code Playgroud)
这是我迄今为止构建的,但继续从远程API接收"无法解析JSON"错误:
<cfset fields[name_first]="#SerializeJSON( "myFirstName" )#" />
<cfset form.email="#SerializeJSON( "email@domain.com" )#" />
<cfhttp
url="https://api.e2ma.net/123/members/add"
method="POST"
username="username"
password="pssword"
useragent="#CGI.http_user_agent#"
result="objGet">
<!--- add email --->
<cfhttpparam
type="formfield"
name="email"
value='#form.email#'
/>
<!--- add field: name_first --->
<cfhttpparam
type="formfield"
name="fields"
value='#fields[name_first]#'
/>
</cfhttp>
<cfoutput>#objGet.FileContent#</cfoutput>
Run Code Online (Sandbox Code Playgroud)
同样,我肯定会以某种方式破坏我的数据结构,但我不确定我做错了什么,特别是关于正确设置"fields":{"first_name":"myFirstName"}结构/数组.
我目前正在使用支付处理器.我可以从我们的服务器浏览到支付URL,因此它不是防火墙问题,但是当我尝试使用CFHTTP时,我得到了一个I/O异常:peer未经过身份验证.我已经下载并安装了他们最新的安全证书到cacerts密钥库并重新启动了CF,但仍然遇到同样的错误.我不仅安装了提供者证书,还安装了证书链中的其他2个Verisign证书颁发机构证书.该证书是较新的Class 3扩展验证证书之一.
有没有人遇到这个并找到了解决方案?
authentication coldfusion certificate certificate-authority cfhttp
我需要通过cfhttp模拟真实的http请求.我正在使用ColdFusion获取rss,但今晚他们开始阻止我的请求并发送索引页面而不是rss fead.
我为cfhttp添加了useragent,但它没有帮助.
Opera,Firefox和Chrome可以在同一台计算机上正确打开Feed.
我目前在CF10的CFHTTP上遇到了很多麻烦.
首先,我的测试脚本:
<CFSET results = arraynew(1) />
<CFLOOP from="1" to="10" index="idx">
<CFSET timer_start = getTickCount() />
<CFHTTP url="https://www.google.de" method="get" result="test" />
<CFSET arrayappend(results, (getTickCount()-timer_start)/1000 & " s") />
</CFLOOP>
<CFDUMP var="#results#" />
Run Code Online (Sandbox Code Playgroud)
10个CFHTTP连续调用,它们占用的时间被推送到一个数组; 就这样.
我们的CF9服务器的结果:

我们的CF10服务器的结果:

我们的CF10服务器的结果在CFHTTP呼叫之间有5秒的延迟:

我已经在论坛和Shilpi博客上看到了原因可能是Linux服务器耗尽了熵.watch --interval=0.1 cat ...当我的测试脚本运行时,我检查了它,但它从未在4k以下下降(已经安装了rngd).
有没有人知道我可以尝试解决这个问题? 使用/ dev/urandom对我来说似乎是一个不安全的黑客攻击; 所以这不是一个选项(因为CF10服务器是生产机器).
多谢你们!
我正在尝试使用Coldfusion 8上的CFHTTP将大型(600MB)二进制文件下载到服务器:
<cfhttp
method="get"
url="#fileURL#"
path="#filePath#"
file="#fileName#"
timeout="600"
getasbinary="auto"
>
Run Code Online (Sandbox Code Playgroud)
它适用于较小的文件(100something MB),但对于较大的文件,我收到Server 500错误:"java.lang.OutOfMemoryError:Java堆空间".
该文件正在从Dropbox文件夹下载 - 因此只有可用选项才能使用HTTP GET.
有没有人知道如何下载它,所以它不会杀死服务器或超时?
我为一个运动队设计了一个网站,我在Wordpress中教练(更具体地说是PHP).在过去几年中,我们使用了一个在Coldfusion中运行基于统计数据的程序的在线Web服务.他们最近开放了一个Feed,因此用户可以使用自己定制的网站,并在其中实施数据.
他们为我提供了这样的提要(出于安全原因不提供我的详细信息):
<cfhttp url="http://datafeed" method="post" result="result">
<cfhttpparam type="formfield" name="seasonID" value="29725">
<cfhttpparam type="formfield" name="codekey" value="mycodekey">
<cfhttpparam type="formfield" name="showGameType" value="RS">
</cfhttp>
Run Code Online (Sandbox Code Playgroud)
我没有使用过Coldfusion的经验,我曾经尝试过在PHP环境中使用它的一些阅读,但我倾向于找到的所有内容都是PHP to Coldfusion,而不是相反.
因此,我来堆栈,我不完全确定这在PHP中如何工作,但cURL应该是答案?理想情况下,我想创建一些wordpress函数并在我的模板页面上调用它们.
我正在尝试使用 cfhttp 从自动下载 url 获取文件。我正在使用以下代码:
<cfhttp method="get" url="http://www.example.com/getfile" path="E:/" file="abc.csv">
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我将文件类型指定为 CSV,因此我能够获取文件,但文件类型可以更改。我试图CFHTTP.MIMETYPE获取文件类型并像这样使用:
<cfhttp method="get" url="http://www.example.com/getfile">
<cffile action="write" file="E:/abc.#listLast(cfhttp.MIMETYPE,'/')#" output="#cfhttp.FileContent#">
Run Code Online (Sandbox Code Playgroud)
这适用于 CSV 和 XML 文件。但我希望它也适用于 Excel 文件。
请帮忙。提前致谢。
这是我当天的问题.假设我在一个页面上有这个:
start.cfm
<cfset body = { "stuff": [ 1,2,3,4,5 ] }>
<cfhttp url="end.cfm" method="post" result="httpResp" timeout="60">
<cfhttpparam type="header" name="Content-Type" value="application/json">
<cfhttpparam type="body" value="#serializeJSON(body)#">
</cfhttp>
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚end.cfm需要输出什么在体内.我试过cfdump从变量到形式到cgi的所有东西,但我无法达到它.我错过了什么?
cfhttp ×10
coldfusion ×10
json ×2
api ×1
certificate ×1
cffile ×1
coldfusion-8 ×1
download ×1
encryption ×1
entropy ×1
httprequest ×1
performance ×1
php ×1
signed ×1