2011-01-19 36 views
3

我想提交数据到SalesForce.com,但我想通过AJAX做到这一点。由于阻止XSS的限制,我让jQuery使用AJAX提交到我的服务器上的PHP页面,然后让该页面简单地将它传递的formdata转发到正确的URL。表单提交和cURL请求之间有什么不同?

如果我提交JS关闭的表单,一切都很好。如果我打开它,Salesforce会确认收到数据(处于调试模式),但它不会显示在我的队列中或SF中的任何位置。 SF将所有传递过来的字段吐出来,然后将我在表格中填写的每个字段都吐出来。

通过此方法(jQuery的$.ajax()到PHP cURL)以及通过本机HTML Submit按钮提交内容有什么区别?有些东西可能会导致SF注册数据,但注册的方式不同?我试过添加CURLOPT_HEADER/CURLOPT_HTTPHEADER信息

+1

我对SF一无所知,但它会期待一个`Cookie`标题以及POST日期,哪个cURL可能不会发送? – TRiG 2011-01-19 17:14:20

+0

我不确定我是否理解这个问题 - 表单是否使用Cookie?我没有在没有AJAX的情况下在这个页面上传递cookie,那么它会在那里寻找什么? – 2011-01-19 17:17:40

+1

USER_AGENT标头是一个明显不同的东西。另外,正如@TRiG所说,浏览器会在每个请求中携带一些cookie,例如会话信息。这可能是销售人员对此敏感。你可以在这里找到关于如何处理卷曲和饼干的信息:搜索“卷曲饼干”或“饼干罐头” – 2011-01-19 17:17:43

回答

2

嗯,唯一不同的是你不能伪造的是请求的IP地址。根据销售人员使用的保护措施有多艰难,您可能无法从单独的IP地址进行欺骗(它会检测并拒绝请求)。

其他一切应该是100%伪造(标题等)。我会建议的是,你会得到萤火虫或TamperData,并看看通常从浏览器发送到salesforce的原始标题。然后从PHP复制确切的请求。如果您需要其他信息,您可以在JS中检测到它并将它传递给PHP(Cookie信息,浏览器信息等)...

0

$ .ajax()从客户端浏览器传输cookie;并且还添加了“X-Requested-With:XMLHttpRequest”请求标头。

+0

该标题是否会自动用cURL转发?因为否则我不认为这是传递。无论哪种方式,但这是很好的知道,谢谢。 – 2011-01-20 15:20:42

0

也许尝试添加运行php的机器(外部)IP地址代码到salesforce中的可信网络列表。登录到salesforce,并进入设置 - >安全控制 - >网络访问,并在那里添加IP。

我遇到了类似的问题,不得不添加运行连接到SF的Java应用程序的服务器的IP地址,这解决了我的问题。

相关问题