我正在使用Spring security和Oauth2。但是我是Spring Oauth2的新手,当前端处理访问资源时,我遇到了CORS错误。
我正在使用下面的筛选器来允许其他域访问该资源:
@Component
@Order(Integer.MAX_VALUE)
public class SimpleCORSFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Credentials", "True");
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
chain.doFilter(req, res);
}
public void init(FilterConfig filterConfig) {}
public void destroy() {}
}
我编写了下面的代码,以允许在我的SecurityConfiguration.java中使用公共资源。
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests().antMatchers("/social/facebook/**","/register/**","/public/**").permitAll().and()
.authorizeRequests().antMatchers("/user/**").hasRole("USER").and()
.exceptionHandling()
.accessDeniedPage("/login.jsp?authorization_error=true")
.and()
.csrf()
.requireCsrfProtectionMatcher(new AntPathRequestMatcher("/oauth/authorize")).disable();
}
对于Oauth2,下面的代码用于保护我的oauth2serverconfig.java中的用户资源。
@Override
public void configure(HttpSecurity http) throws Exception {
http
.requestMatchers().antMatchers("/user/**")
.and()
.authorizeRequests()
.antMatchers("/user/**").access("#oauth2.hasScope('read')")
.regexMatchers(HttpMethod.DELETE, "/oauth/users/([^/].*?)/tokens/.*")
.access("#oauth2.clientHasRole('ROLE_CLIENT') and (hasRole('ROLE_USER') or #oauth2.isClient()) and #oauth2.hasScope('write')")
.regexMatchers(HttpMethod.GET, "/oauth/clients/([^/].*?)/users/.*")
.access("#oauth2.clientHasRole('ROLE_CLIENT') and (hasRole('ROLE_USER') or #oauth2.isClient()) and #oauth2.hasScope('read')")
.regexMatchers(HttpMethod.GET, "/oauth/clients/.*")
.access("#oauth2.clientHasRole('ROLE_CLIENT') and #oauth2.isClient() and #oauth2.hasScope('read')");
}
http://i.stack.imgur.com/yQKJM.png
http://i.stack.imgur.com/XIVx1.png
当我将前端文件移动到Spring服务器的同一域时。获取“公共”和“用户”数据的工作很好,如下所示:
http://i.stack.imgur.com/Q2n7F.png
前端和后端要分开。但CORS被阻止访问预测数据。谁能给我一些建议吗?谢谢.我猜过滤器在Oauth2上不起作用了?还是花很多时间在寻找解决方案上。
@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class SimpleCORSFilter implements Filter {
@Override
public void init(FilterConfig fc) throws ServletException {
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) resp;
HttpServletRequest request = (HttpServletRequest) req;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "PATCH,POST,GET,OPTIONS,DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with, authorization, Content-Type, Authorization, credential, X-XSRF-TOKEN");
if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
response.setStatus(HttpServletResponse.SC_OK);
} else {
chain.doFilter(req, resp);
}
}
@Override
public void destroy() {
}
}
我试图在Angular应用程序中调用我的登录服务,但我遇到了CORS错误。我已经在WebSecurity配置适配器上添加了cors配置。我已经尝试了下面的一些配置。邮递员一切都很好。 授权服务器配置RADAPTER 资源服务器配置RADAPTER Web安全配置r适配器
谢了。
我正在尝试使用AWS JS SDK在前端列出与授权用户关联的Buckets。 ListBucket API文档:http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#listBuckets-财产 并且,listBucket请求失败,并显示以下错误消息: https://s3-us-west-2.amazonaws.com/.对
我有一个非常简单的Spring Boot应用程序,具有社交单点登录功能。 看起来是这样的: 它在应用程序中有必需的条目。yml: 它在我的本地机器上运行得很好,并且只启动了一个实例。 当有多个实例隐藏在负载平衡器后面时,就会出现问题。 即使用户在第一个请求中进行身份验证,向负载均衡器发出的后续请求也会因401而被阻止。 与第一个应用程序实例相比,请求被路由到不同的应用程序实例。 我正在试图弄清楚,
问题内容: 我现在遇到一个奇怪的CORS问题。 这是错误消息: 两台服务器: localhost:8666 / routeREST /:这是一个简单的Python Bottle服务器。 localhost:8080 /:运行我的Javascript应用程序的PythonsimpleHTTPserver。这个应用程式正在上方的伺服器执行Ajax要求。 有什么问题的想法吗? 问题答案: 仅当 协议,主
问题内容: 我正在尝试从API获取JSON对象,并且该API的开发人员说他们刚刚启用了CORS,但我仍然遇到以下错误。 XMLHttpRequest无法加载http://example.com/data/action/getGame/9788578457657。所请求的资源上没有“ Access-Control-Allow-Origin”标头。因此,不允许访问源“ http://dev.our-