我在 heroku 上有一个应用程序,它返回一些 oauth 令牌。在我的 Spring Boot 应用程序中,我使用了 WebMvcConfigurerAdapter 从数据库获取来源列表。
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
String[] origins = new String[originList.size()];
origins = originList.toArray(origins);
registry.addMapping("/getToken").allowedHeaders("Allow-access-control-origin").allowedOrigins(origins);
}
};
Run Code Online (Sandbox Code Playgroud)
现在,在heroku应用程序中有一个文本区域,用户可以在其中更新其域名,用户可以添加多个域。如果用户想要添加多个域,则域将以逗号分隔并直接放入数据库中。稍后在 corsConfigurer() 方法中,我解析域名并获取所有域名并将其列入白名单。
每次用户更新或添加域时,服务器都会重新启动以包含所有更改。
在 Spring 或 Java EE 中,我可以使 cors 注册表在其白名单注册表中动态添加更新或新插入的源,而无需重新启动服务器。
(我在 SO 上搜索了这个问题,但没有找到任何可接受的答案)
谢谢
我有一个包含多个实例的 VMSS,其中部署了一个 java 应用程序。VMSS 连接到应用程序网关。网关启用了会话亲和性。
是否可以覆盖或告诉网关使用由java应用程序创建的cookie?
我需要它的原因是,当请求到达具有多个参数的应用程序网关时,处理是由java应用程序完成的。此处理会创建用户重定向到的唯一 ID 记录。
当此重定向请求到达应用程序网关时,网关将请求发送到另一台不存在唯一 ID 的服务器,从而引发错误。
我的想法:当请求到达网关并到达java程序时,我创建一个包含一些信息的cookie。cookie 被发回,当请求重定向时,我使用相同的 cookie 来识别服务器。
这可能吗?
我可以使用应用程序 cookie 并告诉应用程序网关使用该 cookie 来识别服务器吗?
azure session-cookies azure-application-gateway azure-vm-scale-set
我有一个可以写入 JSON 内容的函数@GetMapping(value = "/getToken")。
@GetMapping(value = "/getToken")
public String getToken(HttpServletRequest request, HttpServletResponse response, Model model) {
// jsonObject
PrintWriter out = response.getWriter();
out.print(jsonObject);
}
Run Code Online (Sandbox Code Playgroud)
现在,用户可以GET使用如下 URL 向上述映射发出请求:
localhost:8080/getToken?username="username"&password="password"
我还创建了一个名为CORSFilterImplements 的类javax.servlet.Filter,我希望此过滤器仅拦截/getToken请求路径中的那些请求。
@WebFilter(urlPatterns = "/getToken")
public class CORSFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// validate user and password
chain.doFilter(requestToUse, responseToUse);
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当我在浏览器中点击localhost:8080或localhost:8080/thankyou时,就会调用上面的过滤器。
我怎样才能阻止这个?
我只想在 URL 路径为时调用上面的过滤器 …