使用javascript复制表单注销提交功能



我有一个功能正常的注销按钮,它成功地结束了使用express服务器ExpressOIDC/express会话建立的会话。OIDC会话和用户被重定向到注销视图。注销按钮html显示在这里:

<form v-if="authenticated" method="POST" action="/logout" id="auth-logout-form" v-cloak>
<span class="user-name">{{userName}}</span>
<input type="submit" value="Logout" />
</form>

我只是想在我的代码中模仿这个函数来进行非活动注销。

首先,我尝试了一个简单的$.post('logout'(。但这会产生以下错误:

访问'XMLHttpRequesthttps://xxxxxxxx.oktapreview.com/oauth2/default/v1/logout?id_token_hint=xxxxxxxxx&post_logout_redirect_uri=https%3A%2F%2Flocalhost%3A3000%2F'(重定向自'https://localhost:3000/logout'(来源'https://localhost:3000'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在"access control Allow Origin"标头。jquery.min.js:2

<blockquote\>GEThttps://xxxxxx.oktapreview.com/oauth2/default/v1/logout?id_token_hint=XXXXXXXXXXXXXXXX&post_logout_redirect_uri=https%3A%2F%2Flocalhost%3A3000%2F net::ERR_FAILED

然后我尝试了这个ajax调用:

if (this.currSeconds >= 5 && this.authenticated === true) {
// this.logoutOIDC
$.ajax({
url: 'logout',
method: "POST",
headers: {
'Access-Control-Allow-Origin': 'https://localhost:3000/',
},
type: 'dataType',
/* etc */
success: function(jsondata) {
console.log(jsondata)
},
})
}

这会产生相同的错误。

当然$("#auth logout form"(。trigger("submit"(";效果很好,但这似乎不是一种正确的方法,我认为这会让注销功能很容易被禁用。

Okta的建议是,如果我要使用中间件,请继续使用$('#auth-logout form'(.trigger('submit'(。可能还有另一种方法,但这种方法在当时的情况下是合适的。

最新更新