Javascript 无法在okta POST/sessions API调用中使用SessionToken创建会话

Javascript 无法在okta POST/sessions API调用中使用SessionToken创建会话,javascript,angularjs,session,amazon-web-services,okta,Javascript,Angularjs,Session,Amazon Web Services,Okta,我可以使用用户名和密码获取sessionToken。但是,在这之后,我想在AngularJS中使用POST调用创建会话,如下所示。angular(整个web应用程序)托管在AWS S3上 var session_data = { 'sessionToken' : My_session_Token}; $http({ method: 'POST', url: 'https://myorg.okta.com/api/v1/sessions', data:

我可以使用用户名和密码获取sessionToken。但是,在这之后,我想在AngularJS中使用POST调用创建会话,如下所示。angular(整个web应用程序)托管在AWS S3上

var session_data = { 'sessionToken' : My_session_Token}; 
$http({
       method: 'POST',
       url: 'https://myorg.okta.com/api/v1/sessions',
       data: session_data,
       headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json',
          }
       }).then(function(response) {
            console.log(response);
       });
我得到的错误是

XMLHttpRequest cannot load https://myorg.okta.com/api/v1/sessions. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://s3.amazonaws.com' is therefore not allowed access.
我已经在Okta中添加了CORS Allow origin头文件以及S3 bucket

当我尝试通过终端执行以下操作时

curl -v -X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
  "sessionToken": "my_session_Token"
}' "https://myorg.okta.com/api/v1/sessions"
我第一次

{"errorCode":"E0000005","errorSummary":"Invalid session","errorLink":"E0000005","errorId":"oaefADOnPONTDidUZYyrVc5rQ","errorCauses":[]}MAC-S014568:~
第二次,因为sessionToken是一次性使用,所以我得到以下错误

{"errorCode":"E0000004","errorSummary":"Authentication failed","errorLink":"E0000004","errorId":"oaeI-KKSO-iRGSR1gmyUjBS8g","errorCauses":[]}MAC-S01
我认为问题不在于CORS标题(允许原点),因为我已经添加了原点。 另外,我不能使用SSWS{api_TOKEN},因为我的应用程序处于角度,暴露api TOKEN有风险。
非常感谢您的帮助

Okta不支持发布到/api/v1/sessions以在浏览器中设置cookie。对于一个简单的用例,您可以使用重定向流:

window.location = 'https://myorg.okta.com/login/sessionCookieRedirect?token={sessionToken}&redirectUrl={redirectUrl}';

这里列出了使用sessionToken设置cookie的所有允许方法:

实际上,我并不是要设置cookie,而是要获取当前用户id和用户角色,我将在POST http的响应中获取这些信息。在设置cookie后,您可以通过在myorg.okta.com/API/v1/users/me上发出get请求来获取当前用户id。但是,您将无法调用myorg.okta.com/users/me/roles,因为它不支持CORS。没有CORS标签谢谢Kevlened我在试图发布我的sessionToken时也不断收到CORS错误。。。。奇怪的是,我们不能在自己的服务器端完成这项工作。