我正在尝试向SalesForce.com提交数据,但我想通过AJAX来实现。由于有限制来阻止XSS,我让jQuery使用AJAX提交到我的服务器上的PHP页面,然后让该页面简单地转发它传递给正确URL的formdata。
如果我在关闭JS的情况下提交表单,一切都会顺利进行。如果我打开它,Salesforce会确认收到数据(在调试模式下),但它没有显示在我的队列中,或者在SF中的任何地方。 SF吐出它传递的所有字段,并且它正在吐出我在表单中的每个字段,并正确填写。
通过此方法(jQuery的$.ajax()
向PHP cURL)提交内容与通过本机HTML提交按钮之间是否存在任何差异?可能导致SF注册数据的东西,但注册方式不同?我已尝试添加CURLOPT_HEADER
/ CURLOPT_HTTPHEADER
信息
答案 0 :(得分:2)
嗯,唯一不同的是你不能伪造的是请求的IP地址。根据salesforce使用的保护程度,您可能无法欺骗单独的IP地址(它会检测并拒绝请求)。
其他一切都应该是100%可伪造的(标题等)。我建议您使用firebug或TamperData并查看通常从浏览器发送到salesforce的原始标头。然后从PHP复制那个确切的请求。如果您需要其他信息,可以在JS中检测到它并将其传递给PHP(Cookie信息,浏览器信息等)......
答案 1 :(得分:0)
$ .ajax()从客户端浏览器传输cookie;它还添加了“X-Requested-With:XMLHttpRequest”请求标头。
答案 2 :(得分:0)
也许尝试将运行php代码的计算机的(外部)IP地址添加到salesforce中的可信网络列表中。登录salesforce,然后转到设置 - >安全控制 - >网络访问,并在那里添加IP。
我遇到了类似的问题,不得不添加运行连接到sf的java应用程序的服务器的ip地址,这解决了我的问题。