我们有一个AJAX GET调用,它会在单击按钮时触发,我们正在使用Google Chrome版本67.0.3396.99
function redirect() {
$.ajax({
type: 'GET',
url: 'login/salesforce/login',
contentType: 'application/octet-stream; charset=utf-8',
headers: {
'Content-Type':'application/x-www-form-urlencoded'
},
success: function (result) {
alert(result);
},
error: function (xhr) {
handleError();
},
processData: false
});
}
在服务器端,我们有一个Response.temporaryRedirect重定向到 https
的salesforce uri@GET
@Path("/login")
def redirect(): Response = {
val URL =
s"$SERVER$OAUTH2_AUTHORIZE_PATH?response_type=code&" +
s"client_id=$CLIENT_ID&redirect_uri=$REDIRECT_URI$OAUTH2_REDIRECT_PATH"
Response.temporaryRedirect(new java.net.URI(URL)).build()
}
现在执行ajax调用时,调用已成功,并且我们使用302获得重定向网址,但浏览器未重定向,并且在控制台上我可以看到
对飞行前的响应无效(重定向)
**我们最初的研究指向这一点是因为CORS从http(localhost)重定向到salesforce的https网址**
我们尝试将'Content-Type':'application / x-www-form-urlencoded'添加到请求的标头中,但是如果您能将我们的正确方向指向,仍然无法使浏览器重定向克服这个问题将有很大帮助
注意:还验证了当我们将复制的内容粘贴到直接能够成功导航到Salesforce网站的浏览器中时,返回的重定向URL是有效的