使用ColdFusion的CFHTTP模拟表单提交Authorize.net失败原因咨询
问题原因分析
- 请求头匹配错误:原HTML表单由浏览器发起提交时,会自动发送包含
text/html的Accept请求头,明确告知服务器需要返回HTML格式的页面内容。但你在CFHTTP请求中添加了Accept-Type: application/json头,这会让Authorize.net服务器判定你需要JSON格式响应,因此不会返回预期的完整HTML页面。 - 缺少浏览器环境标识:浏览器发起请求时会自动携带
User-Agent等标识头,表明请求来自浏览器客户端。CFHTTP默认的User-Agent是ColdFusion相关标识,服务器可能会据此判断请求来源非浏览器,返回非预期的响应内容。
修复方案
移除错误的
Accept-Type头,或替换为符合网页请求的格式:<cfhttpparam type="header" name="Accept" value="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" />添加模拟浏览器的
User-Agent头,让服务器识别为浏览器请求:<cfhttpparam type="header" name="User-Agent" value="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" />调整后的完整CFHTTP代码示例:
<cfhttp url="https://test.authorize.net/payment/payment" method="post"> <cfhttpparam type="header" name="Accept" value="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" /> <cfhttpparam type="header" name="User-Agent" value="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" /> <cfhttpparam type="formfield" name="token" value="#response#" /> </cfhttp>
内容的提问来源于stack exchange,提问作者John P
相关产品推荐
相关产品推荐

