我正在尝试在远程应用上创建用户登录/注册,以访问Salesforce上的用户数据。我通过Salesforce REST API从javascript执行此操作。由于CORS限制,这无法直接使用javascript请求,因此我找到了this example。我的代码如下:
var result = sforce.connection.login('example@provider.com', 'pass'+'securityToken');
sforce.connection.init(result.sessionId, 'https://login.salesforce.com/services/oauth2/token')
sforce.connection.remoteFunction({
url: 'https://login.salesforce.com/services/oauth2/token',
requestHeaders: {
"Authorization" : "Bearer " +__sfdcSessionId,
"Content-Type":"application/json",
"Connection":"Keep-Alive"
},
method: "GET",
onSuccess : function(response) {
console.log("Success " + response)
},
onFailure: function(response) {
console.log("Failed " + response)
}
});
当我运行此代码时,我收到以下错误:
1)拒绝设置不安全的标题" User-Agent"
2)POST http:///services/Soap/u/31.0 404(未找到)
3)远程调用失败,原因是:
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /services/Soap/u/31.0 was not found on this server.</p>
</body></html>
status code:
使用代码编辑器我可以看到在点击sforce.connection.login()脚本之后发生了错误,并且从未在我的代码中将其发送到sforce.connection.init()脚本。
如何解决此问题,以便我可以从远程Web应用程序登录用户并访问salesforce中的用户信息?
答案 0 :(得分:0)
您的问题似乎与this post
中的问题相似不允许XMLHttpRequest设置这些标头,它们由浏览器自动设置。原因是通过操纵这些头文件,您可能会欺骗服务器通过相同的连接接受第二个请求,这个连接不会通过通常的安全检查 - 这将是浏览器中的安全漏洞。