找文章 / 找答案
精选问答 更多内容

[管理与运维] 前端调用单点退出接口跨域问题

No上善若水白银二 显示全部楼层 发表于 2023-6-26 09:12:37 |阅读模式 打印 上一主题 下一主题
1
未解决
背景:自研的网页里面内嵌了永洪bi,网页的域名和bi服务的域名不一致,现在想要通过调用单点退出接口去解决用户退出后还能用旧token访问的问题(需要解决当前页面刷新还能访问的问题)
前端调用https://xxx/bi/Viewer?proc=11&action=logout&isJs=true接口时,会跨域,请问该如何解决这个问题呢,有没有地方可以配置跨域信息,或者有什么方法是不需要前端调用接口就能解决旧token缓存问题?

回复

使用道具 举报

精彩评论8

yhdata_yzm 显示全部楼层 发表于 2023-6-26 13:44:55
要解决前端调用单点退出接口时出现的跨域问题,您可以考虑以下方法:

1. 配置后端跨域信息:如果您有控制后端服务器的权限,您可以在后端服务器上进行跨域配置。具体的配置方法取决于您使用的服务器技术,例如在使用 Apache 服务器时,可以通过修改 .htaccess 文件或使用 mod_proxy 实现跨域配置。在配置中,您可以指定允许访问您的接口的域名和请求头信息。

2. 代理服务器:您可以设置一个代理服务器来处理跨域请求。代理服务器位于与前端应用和后端服务之间,并在中间转发请求。前端应用可以将请求发送到代理服务器,代理服务器再将请求转发到后端服务,以避免跨域问题。

3. JSONP:如果后端接口支持 JSONP(JSON with Padding),您可以使用 JSONP 方式发送请求。JSONP 允许在不受同源策略限制的情况下进行跨域请求。您需要在前端调用的 URL 中添加一个回调函数参数,使得后端返回的响应会包裹在该回调函数中。但请注意,JSONP 有一些安全性和限制方面的考虑。

关于旧 Token 缓存问题的解决方案,您可以考虑以下方法:

1. 在后端验证 Token:在后端服务中,每次接收到请求时,都对 Token 进行验证。如果 Token 失效或已过期,则返回相应的错误或状态码,要求用户重新登录。

2. 设置短期 Token 过期时间:将 Token 的过期时间设置得较短,使其在一定时间后失效。这样,即使用户在退出后尝试使用旧 Token,也会在较短时间内失效,需要重新获取有效的 Token 才能进行访问。

参考下
回复

使用道具 举报

No上善若水白银二 显示全部楼层 发表于 2023-6-27 15:09:25
yhdata_yzm 发表于 2023-6-26 13:44
要解决前端调用单点退出接口时出现的跨域问题,您可以考虑以下方法:

1. 配置后端跨域信息:如果您有控制 ...

如果我们部署一套Nginx能解决这个问题吗?
回复

使用道具 举报

yhdata_yzm 显示全部楼层 发表于 2023-6-27 17:12:47
No上善若水 发表于 2023-6-27 15:09
如果我们部署一套Nginx能解决这个问题吗?

应该可以
回复

使用道具 举报

小么小二郎青铜二 显示全部楼层 发表于 2023-6-27 19:57:30
要解决前端调用单点退出接口时出现的跨域问题,您可以考虑以下方法:

1. 配置后端跨域信息:如果您有控制后端服务器的权限,您可以在后端服务器上进行跨域配置。具体的配置方法取决于您使用的服务器技术,例如在使用 Apache 服务器时,可以通过修改 .htaccess 文件或使用 mod_proxy 实现跨域配置。在配置中,您可以指定允许访问您的接口的域名和请求头信息。

2. 代理服务器:您可以设置一个代理服务器来处理跨域请求。代理服务器位于与前端应用和后端服务之间,并在中间转发请求。前端应用可以将请求发送到代理服务器,代理服务器再将请求转发到后端服务,以避免跨域问题。

3. JSONP:如果后端接口支持 JSONP(JSON with Padding),您可以使用 JSONP 方式发送请求。JSONP 允许在不受同源策略限制的情况下进行跨域请求。您需要在前端调用的 URL 中添加一个回调函数参数,使得后端返回的响应会包裹在该回调函数中。但请注意,JSONP 有一些安全性和限制方面的考虑。
回复

使用道具 举报

yanieye 显示全部楼层 发表于 2023-6-27 20:30:29
小么小二郎 发表于 2023-6-27 19:57
要解决前端调用单点退出接口时出现的跨域问题,您可以考虑以下方法:

1. 配置后端跨域信息:如果您有控制 ...

请不要灌水,浪费资源和其他人的时间。
回复

使用道具 举报

No上善若水白银二 显示全部楼层 发表于 2023-6-28 10:46:49
yhdata_yzm 发表于 2023-6-26 13:44
要解决前端调用单点退出接口时出现的跨域问题,您可以考虑以下方法:

1. 配置后端跨域信息:如果您有控制 ...

我们尝试在Tomcat内的bi项目下的web.xml配置跨域信息,但是不生效,请问是不支持这种操作还是我们配置的方式有问题呢?
回复

使用道具 举报

yhdata_yzm 显示全部楼层 发表于 2023-6-28 13:37:54
No上善若水 发表于 2023-6-28 10:46
我们尝试在Tomcat内的bi项目下的web.xml配置跨域信息,但是不生效,请问是不支持这种操作还是我们配置的 ...

大概率是配置方式不正确。是在标签web-app下配置的么
回复

使用道具 举报

No上善若水白银二 显示全部楼层 发表于 2023-6-28 15:51:21
yhdata_yzm 发表于 2023-6-28 13:37
大概率是配置方式不正确。是在标签web-app下配置的么

是web-app下,  
<filter>
    <filter-name>CorsFilter</filter-name>
    <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
    <init-param>
      <param-name>cors.allowed.origins</param-name>
      <param-value>*</param-value>
    </init-param>
    <init-param>
      <param-name>cors.allowed.methods</param-name>
      <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
    </init-param>
    <init-param>
      <param-name>cors.allowed.headers</param-name>
      <param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>
    </init-param>
    <init-param>
      <param-name>cors.exposed.headers</param-name>
      <param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
    </init-param>
    <init-param>
      <param-name>cors.support.credentials</param-name>
      <param-value>false</param-value>
    </init-param>
  </filter>

  <filter-mapping>
    <filter-name>CorsFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
回复

使用道具 举报

高级模式
您需要登录后才可以回帖 登录 | 免费注册

  • 官方微信

    欢迎关注永洪服务号!收费为0,价值无限

    扫码关注
  • 新浪微博

    让每位用户轻松挖掘数据价值!

    访问新浪微博
  • 智能客服
50W

会员等你来哦

Copyright   ©2012-2024  北京永洪商智科技有限公司  (京ICP备12050607) 京公网安备110110802011451号 |《永洪社区协议》
返回顶部