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

401当我尝试连接我的角度J到Spring引导[重复]

蓬运诚
2023-03-14

我在webstorm上创建了一个客户端angular,在Eclipse上创建了一个Spring Boot服务器。问题是,当我尝试打开会话时,会收到以下错误消息:

OPTIONS http://localhost:8080/allquestions 401 ()
(anonymous) @ angular.js:12410
p @ angular.js:12155
(anonymous) @ angular.js:11908
(anonymous) @ angular.js:16648
$eval @ angular.js:17972
$digest @ angular.js:17786
$apply @ angular.js:18080
(anonymous) @ angular.js:19924
f @ angular.js:6111
(anonymous) @ angular.js:6390


XMLHttpRequest cannot load http://localhost:8080/allquestions. Response for preflight has invalid HTTP status code 401
@EnableWebMvc
@Configuration
@ComponentScan
public class WebConfig extends WebMvcConfigurerAdapter {

public WebConfig() {
    super();
}

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/login").setViewName("login");
    registry.addViewController("/").setViewName("welcome");
    registry.addViewController("/welcome").setViewName("welcome");
    registry.addViewController("/exam").setViewName("exam");
    registry.addViewController("/report").setViewName("report");
    registry.addViewController("/error").setViewName("error");
    registry.addViewController("/editing").setViewName("editing");
}

@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
    super.addResourceHandlers(registry);
    registry.addResourceHandler("/images/**").addResourceLocations("/images/");
    registry.addResourceHandler("/css/**").addResourceLocations("/css/");
    registry.addResourceHandler("/js/**").addResourceLocations("/js/");
}
@RestController
public class HomeController {

@Autowired
private BusinessModel businessModel;
private List<String> messages;

private User currentUser;

@PostConstruct
public void init() {
    messages = businessModel.getMessages();
}

// Communicate informations to client
private void sendOptions(HttpServletResponse response) {
    if (businessModel.getCorsNeeded().booleanValue()) {
        // Fix the header CORS
        response.addHeader("Access-Control-Allow-Origin", "*");
        // Header Authorization
        response.addHeader("Access-Control-Allow-Headers", "Authorization");
    }
}

// questions list via OPTIONS
@RequestMapping(value = "/allquestions", method = RequestMethod.OPTIONS)
public void getAllQuestions(HttpServletResponse response) {
    sendOptions(response);
}
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Autowired
private UsersService usersService;

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.httpBasic();
    http.authorizeRequests().antMatchers("/login").permitAll().antMatchers("/**").hasRole("USER").and().formLogin()
            .loginPage("/login").and().logout();
}

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth.userDetailsService(usersService).passwordEncoder(new BCryptPasswordEncoder());
}
}

无法添加xml文件(工作上下文限制)...

我完全被堵住了,我需要你的帮助!

共有1个答案

南门正祥
2023-03-14

每个人的解决方案!

您可以创建一个可以进行排序的筛选器:

公共类CorsFilter实现Filter{

    @Override
    public void destroy() {
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filter)
            throws IOException, ServletException {
        HttpServletResponse httpResponse = (HttpServletResponse) response;
        httpResponse.setHeader("Access-Control-Allow-Origin", "*");
        httpResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        httpResponse.setHeader("Access-Control-Max-Age", "3600");
        httpResponse.setHeader("Access-Control-Allow-Headers", "Authorization");
        filter.doFilter(request, response);
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
    }

}
@EnableAutoConfiguration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private UsersService usersService;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.addFilterBefore(new CorsFilter(), ChannelProcessingFilter.class);
        http.csrf().disable();
        http.httpBasic();
        http.authorizeRequests().antMatchers(HttpMethod.OPTIONS, "/", "/**").permitAll();
        http.authorizeRequests().antMatchers(HttpMethod.GET, "/", "/**").permitAll();
        //http.authorizeRequests().antMatchers("/login").permitAll().antMatchers("/**").hasRole("USER").and().formLogin().loginPage("/login").and().logout();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(usersService).passwordEncoder(new BCryptPasswordEncoder());
    }
}

在那里,您可以看到在请求之前正确地调用过滤器:http.addFilterBefore(new CorsFilter(),ChannelProcessingFilter.class)。

这是我找到的最好的解决办法,也是唯一对我有效的办法!我希望,它能帮到你!

 类似资料:
  • 问题内容: 我正在努力在要创建的桌子上设置角度分页。 我已经完成了文档工作。但是,我没有看到如何将分页连接到表。我的分页大小与数组大小匹配。它们是正确数量的按钮链接,用于页面的页面长度。但是,我的桌子仍然全长,无法测试分页。 这是我的桌子主体 我已经将表格主体设置在 表格标签的 外面,在里面尝试了它,但是我的分页控件没有出现。 这是我的分页 我还设置了一个 p标签,以确保选项卡响应 段落内的总项目

  • 我试图连接,以便在Derby中为一个类项目创建db,但遇到了以下问题:我从Derby官方网站下载了zip文件,目前我使用的是10.12.1.1版本,我已经执行了startNetwork命令,它向我显示了一个日志文件,该文件表示已准备好接受端口1527上的连接,但当我尝试使用该命令连接时(在ij中):connect

  • 试图通过IMAP连接连接到gmail,捕获javax.mail.MessagingException 堆栈跟踪: 主:

  • 当我试图在flash插件和red5服务器安装之间建立连接时,我得到了以下错误。请帮帮我. [ERROR][rtmpConnectionExecutor#dtqatxjixlu78-1]org.red5.server.net.rtmp.basertmphandler-Exception java.lang.nosuchmethoderror:org.red5.server.scope.scope$c

  • 我想做的密码强度角,大写,小写,数字和特殊字符角在控制台中,我得到的错误。 没有密码强度的提供者!在passwordstrength.ts文件中 超文本标记语言 断续器 密码strength.ts

  • 问题内容: 我正在使用角度生成器构建一个yeoman应用程序。 我的index.html文件中包含的js库是: 仅当在jquery 之前 包含jquery时,才会出现此问题,如果在jquery 之后 ,则不会发生。 标题指出的问题是,我在控制台中收到 “警告:试图多次加载角度” ,应用无法初始化。 有人知道为什么会发生这种情况吗? 我只有一个ng-app,我只包含了一次angular …一切。它看