当前位置: 首页 > 知识库问答 >
问题:

角形Spring防尘套交叉原点过滤器不工作

司马高明
2023-03-14

我知道对此有很多问题。但是,我仍然无法解决应用程序中的跨源块问题。我已经在Spring Boot应用程序中实现了所有的过滤器,但问题仍然存在。有人能指引我走向正确的道路吗?

角度应用-http://localhost:4200/auth

Spring启动应用程序-http://localhost:8082/app1

主类

@SpringBootApplication
public class App1Application implements WebMvcConfigurer {

    public static void main(String[] args) {
        SpringApplication.run(App1Application.class, args);
    }
}

Cors过滤器类

@Component
public class CORSFilter implements Filter {

    public CORSFilter() {
        System.out.println("Filtering on...........................................................");
    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {

        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;

        response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With, remember-me");
        chain.doFilter(req, res);
    }

    public void init(FilterConfig filterConfig) {
    }

    public void destroy() {
    }
}

控制器类

@RestController
public class UserController {

    @GetMapping("/get-id")
    public String getId() {
        return "Welcome SSO";
    }

应用yml

server:
  port: 8082
  servlet:
    context-path: /app1

角服务部件

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class AuthService {

  private baseUrl ="http://localhost:8082/app1";

  constructor(private http: HttpClient) { }

  changeButton(id: number): Observable<any> {
    console.log("Service hit")
    return this.http.get<any>(this.baseUrl + '/get-id');
  }
}

共有2个答案

文德曜
2023-03-14

请看一看-https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin

起源看起来不正确。

子车海
2023-03-14

您应该在spring boot中使用控制器中的@CrossOrigin或如下全局配置启用CORS:

@Configuration
public class MyConfiguration {

    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**");
            }
        };
    }
}

请参阅:Spring Boot Referencez CORS

或:博客:CORS支持在Spring启动

在代码中,您可以尝试设置*

response.setHeader("Access-Control-Allow-Origin", "*");
 类似资料:
  • 我正在尝试使用spring boot和hibernate。当我使用存储库时,它工作得很好,但我正在尝试使用Hibernate会话来创建DAO,而这个DAO不是事务的一部分。 这是测试代码: 应用Java语言 UserBusinessImpl。java: 用户存储库。Java语言 用户DAO: 当我尝试getCurrentSession()时,它抛出了一个错误。openSession()与我的事务分

  • 我在前端有一个应用程序,我使用角,后端我使用Spring Boot。在我的前端,我必须上传一个CSV文件,在表中插入数据。所以我将数据发送到保存它的后端。我的问题:我有一个类个人与关系@OneTo很多到其他类像comtes。所以当我尝试使用此Rest服务获取所有个人:http://localhost:8080/api/individus时,我有一个解析json数据错误。 这是我的班级个人: 公共类

  • 我目前正在尝试编写一个Spring Boot启动器,它将使用API网关自动验证我们的微服务,并在所有传出请求(针对网关)的标头中包含访问令牌。 我正在创建一个RestTemboard bean并为其提供我们的自定义拦截器,但我的问题是,通过这样做,我阻止其他团队(将使用此启动器)使用他们自己的RestTemboard配置,因为他们必须定义导致多个bean存在的相同bean。 是否有其他方法可以拦截

  • 我想将Spring启动执行器添加到我的应用程序,但当我添加此依赖项时 我得到以下错误 java.lang.reflect.InvocationTargetException at_NativeMethodAccessorImpl.invoke0(Native Method)at(...)由以下原因引起:org.springframework.beans.factory.不满意DependencyE

  • 我只是无法解决我的角度10应用程序和Spring引导1.5之间的CORS问题。 我已经尽我所能尝试了一切,但仍然不起作用。我正在尝试设置一个全局CORS配置以允许一切 我目前的实现: 我在前端得到了这个: 版本 [编辑] 我将其改为: 但还是不起作用

  • 我试图通过遵循这里的教程,使用Spring boot在Java中创建一个RESTful应用程序。我想修改它,以便可以从URL中提取标识符,并使用它来服务请求。 所以