我正在尝试通过我的应用程序中的Sakai LMS播放Scorm内容。为此,我想在登录Sakai并将其传递给其他任何调用后获得用户会话。我可以通过rest呼叫从Sakai登录后获得用户会话cookie,但是我无法在标头中传递“ Set-cookie”或手动存储cookie,这样我就可以使用它们来调用播放Scorm或为当前用户调用其他功能的其他URL。 如何使用getSession API返回的cookie为登录用户执行其他功能?
我尝试通过登录名传递响应标头以进行下一个API调用。
我已尝试在删除“仅HTML”(例如“ SAKAI2SESSIONID =“ + session +”。domain; Path = /;“)之后形成会话并将其添加到标头中
我尝试在响应中传递会话ID和cookie并将其手动存储在本地存储中
----- 1 ------
HttpPost httpPost = new HttpPost(url);
httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded");
httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse response = client.execute(httpPost);
Header[] headers = response.getAllHeaders();
String session=EntityUtils.toString(response.getEntity());
response.setHeader("Set-Cookie","SAKAI2SESSIONID="+session);
---- 3 ----
function getSessionId() {
let data = {
password: "pass",
userId: "user"
}
fetch('http:ldomain/sakai/getSession', {
method: 'POST',
body: JSON.stringify(data),
headers:{
'Content-Type': 'application/json',
"Access-Control-Allow-Origin": "*"
},
})
.then(response => response.json())
.then(response => {
localStorage.setItem('SAKAI2SESSIONID', response.entity.cookie[0])
document.cookie= response.entity.cookie[0];
})
.catch(error => console.error('Error:', error))
}
即使我在尝试执行此操作后尝试访问Scorm URL时都尝试了所有这些操作,但它仍将我重新定向到登录页面。