首页 > 其他分享 >keycloak~正确让api接口支持跨域

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

时间:2024-05-23 09:31:53浏览次数:19  
标签:跨域 cors CORS api Cors Response keycloak

相关参考

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请求将会返回如下截图:

标签:跨域,cors,CORS,api,Cors,Response,keycloak
From: https://www.cnblogs.com/lori/p/18207630

相关文章

  • wpf 动画显示隐藏_[UWP]用Win2D和CompositionAPI实现文字的发光效果,并制作动画
    weixin_39880899于2020-12-1109:26:23发布阅读量521 收藏点赞数文章标签: wpf动画显示隐藏  1.成果 献祭了周末的晚上,成功召唤出了上面的番茄钟。正当我在感慨“不愧是Shadow大人,这难道就是传说中的五彩斑斓的黑?”“那才不是什么阴影效果,那是......
  • 【DRF-03】rest-framework之APIView
    安装djangorestframeworkpipinstalldjangorestframework基本流程:url--》视图类--》执行dispatch方法fromrest_framework.viewsimportAPIViewfromrest_framework.responseimportResponseclassTestView(APIView):defdispatch(self,request,*args,*......
  • RestFul API风格(规范)
     在现代web开发中,API(应用程序编程接口)扮演着至关重要的角色。它们使得不同的应用程序能够彼此通信,共享数据和功能。在众多API设计风格中,RESTful风格因其简洁性和高效性而备受推崇。本文将带你深入了解RESTful风格,探索其基本原则和最佳实践。 1.什么是RESTful风......
  • APIO2024 游记
    5.21才写的,有些可能记不起来了。Day0白天抽机,下午很困,晚上去了西湖,景色很美。很晚吃的饭,很饿。Day1入住新酒店,且学校伙食明显好了很多。下午晚上筹集。Day2早上是gyr讲课,下午是两名国家队成员讲课。积性函数和wc差不多,很无聊,组合计数还行。Day3早上试机,十点开......
  • Lua常用C Api接口
    Lua5.4是Lua语言的一个版本,它提供了许多CAPI函数,这些函数允许开发者在C语言中嵌入和扩展Lua的功能。以下是一些常用的Lua5.4CAPI函数,以及它们的简单示例:lua_newstate-创建一个新的Lua状态。lua_State*L=lua_newstate(0,0);//创建一个新的Lua状态......
  • THUSC & APIO2024 - 无题
    2024.05.09明天要飞宁波了,今天晚上机房几乎没有老师,颓废人数达到巅峰(换言之,根据我的观察,只有xzj和ly没有颓废过)。所以说应该放松一下。今天真的做了很多题!!!2024.05.10早上坐飞机从江北机场飞到栎社机场。在出发前遇到了jjh,跟他打招呼,他竟然没有回应我,愤慨!接着从机场坐地铁......
  • keycloak~自定义认证流设置固定redirect_uri
    redirect_uri在keycloak进行认证成功之后,会重定向到这个目标页面,一般为用户的来源页,即你在登录之前访问的页面;自定义认证流是指对keycloak中的brower和directgrant两个认证方式的过程添加自定义策略,如在用户登录成功时,检查它的密码强度,如果不符合要求,就跳到一个说明页面,告诉用户,......
  • .net webapi 处理前端请求跨域问题
    1.打开 Program.cs文件,在 varapp=builder.Build();语句前添加如下代码builder.Services.AddCors(o=>o.AddPolicy("any",p=>p.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod()));2.在varapp=builder.Build();语句后添加 app.UseCors();app.UseCors();......
  • 基于webapi的websocket聊天室(番外一)
    上一篇我已经实现了聊天室,并且在协议中实现了4种类型的消息传输。其实还可以添加video,audio,live等等类型。不过假如把目前的协议看作RCP1.0版的话,这个版本就只支持有限的4种消息。精力有限啊。也许RCP2.0就可以把video,audio类型加进去?这不是这篇番外考虑的。而是我在定义和实现......
  • 节省时间,使用企业联系方式API接口!
     在现代高速发展的商业环境下,了解其他企业的联系方式是非常重要的。你可能需要与其他企业进行商业合作,或者需要获取其他企业的相关信息。而传统的方式需要耗费大量时间和精力,因此我们为您推荐使用我们的企业联系方式API接口,帮助您快速获取企业联系方式信息。我们的API接口可以......