keycloak~正确让api接口支持跨域

打印 上一主题 下一主题

主题 894|帖子 894|积分 2682

相干参考

jax-ws情况的cors
  1. return Response.ok()
  2.          .entity(p)
  3.          .header("Access-Control-Allow-Origin", "*")
  4.          .header("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT")
复制代码
keycloak对jax-ws的cors封装

下面是keycloak源码中,针对/cert这个接口的跨域请求
  1. @OPTIONS
  2. @Path("certs")
  3. @Produces(MediaType.APPLICATION_JSON)
  4. public Response getVersionPreflight() {
  5.     return Cors.add(request,     Response.ok()).allowedMethods("GET").preflight().auth().build();
  6. }
  7. @GET
  8. @Path("certs")
  9. @Produces(MediaType.APPLICATION_JSON)
  10. @NoCache
  11. public Response certs() {
  12.   // 相关业务代码
  13.    Response.ResponseBuilder responseBuilder =
  14.         Response.ok().cacheControl(CacheControlUtil.getDefaultCacheControl());
  15.     return Cors.add(request, responseBuilder).allowedOrigins("*").auth().build();
  16. }
复制代码
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-Origin、Access-Control-Allow-Methods、Access-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请求将会返回如下截图:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

石小疯

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表