keycloak~正确让api接口支持跨域
  2xk0JyO908yA 2024年08月06日 45 0

相关参考

jax-ws环境的cors

return Response.ok()
         .entity(p)
         .header("Access-Control-Allow-Origin", "*")
         .header("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT")

keycloak对jax-ws的cors封装

下面是keycloak源码中,针对/cert这个接口的跨域请求

@OPTIONS
@Path("certs")
@Produces(MediaType.APPLICATION_JSON)
public Response getVersionPreflight() {
    return Cors.add(request,     Response.ok()).allowedMethods("GET").preflight().auth().build();
}

@GET
@Path("certs")
@Produces(MediaType.APPLICATION_JSON)
@NoCache
public Response certs() {
  // 相关业务代码
   Response.ResponseBuilder responseBuilder =
        Response.ok().cacheControl(CacheControlUtil.getDefaultCacheControl());
    return Cors.add(request, responseBuilder).allowedOrigins("*").auth().build();

}

org.keycloak.services.resources.Cors对象

org.keycloak.services.resources.Cors 类是 Keycloak 中用于处理跨域资源共享(CORS)的工具类。在 Web 开发中,由于浏览器的同源策略限制,跨域请求可能会受到限制,而 CORS 是一种机制,允许服务器声明哪些源可以访问其资源。

org.keycloak.services.resources.Cors 类提供了一些方法来帮助处理 CORS 相关的逻辑,包括:

  • checkCorsPreflightRequest:用于检查是否为 CORS 预检请求(Preflight Request),并根据请求头信息进行相应处理。
  • addHeaders:向响应中添加 CORS 相关的头信息,如 Access-Control-Allow-OriginAccess-Control-Allow-MethodsAccess-Control-Allow-Headers 等。

通过使用 org.keycloak.services.resources.Cors 类,你可以更方便地处理跨域请求,确保符合 CORS 的规范,从而使得客户端能够安全地与 Keycloak 服务进行交互。这个类在 Keycloak 中的一些内部实现中被使用,以确保跨域请求能够正确处理和响应。

跨域说明

当前端向后端发送xhr请求时,如果域名不同(a.shop.com和b.shop.com,虽然主域相同,但对于cors来说,也是跨域),浏览器会先发一个options的请求,返回是否支持跨域,并且告诉客户端哪些(get,post,put,delete)方式支持跨域。

例如,如果服务端支持跨域,你的浏览器发送的OPTIONS请求将会返回如下截图:

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2024年08月06日 0

暂无评论

推荐阅读
  VGxawBTN4xmE   2天前   19   0   0 Java
  FHUfYd9S4EP5   4天前   28   0   0 Java
  u8s65Xl4dX8N   4小时前   9   0   0 Java
  qCe06rFCa8NK   4小时前   13   0   0 Java
  ZTo294hNoDcA   4天前   28   0   0 Java
  FHUfYd9S4EP5   4天前   23   0   0 Java
2xk0JyO908yA