如何存储从Sakai登录名接收到的Cookie并将其传递给Sakai的其他其他通话

时间:2019-04-01 14:25:24

标签: javascript java cookies http-headers sakai

我正在尝试通过我的应用程序中的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时都尝试了所有这些操作,但它仍将我重新定向到登录页面。

0 个答案:

没有答案