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

Angular-Maven/Spring行李箱不能工作

易雅畅
2023-03-14

我试图建立一个应用程序,它有一个角前端和一个Maven/Spring Boot后端,并建立了我的第一个REST控制器。我的问题是,当我从Angular IDE向后端发送GET HTTP请求时,它会返回一个错误,说明:

package com.SSCCoursework.controller;

import com.SSCCoursework.Model.SharePrice;
import com.SSCCoursework.Model.Shares;
import com.SSCCoursework.Model.SharesList;
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@CrossOrigin (origins = "http://localhost:4200", maxAge = 3600)
@RestController
public class ApiController
{ 
    File Shares_File = new File("Shares_Data.xml");
    ArrayList<Shares> shareList = new ArrayList<Shares>();

    @RequestMapping(value="/api/getData", produces="application/JSON")
    public Object getData()
    {   
        Shares share1 = new Shares();
        SharePrice share1_2 = new SharePrice();
        share1.setCompanyName("test");
        share1.setCompanySymbol("test");
        share1.setNumOfShares(123);
        Date date = new Date();
        share1.setLastShareUpdate(date);
        share1_2.setCurrency("dollar");
        share1_2.setValue(12345f);
        share1.setSharePrice(share1_2);
        shareList.add(share1);

        SharesList sharelist = new SharesList();
        sharelist.setBookList(shareList);

        return share1;
    }
}
package com.SSCCoursework.Security;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;

@Component
public class SimpleCORSFilter implements Filter 
{
    @Override
    public void init(FilterConfig filterConfig) throws ServletException 
    {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException 
    {
        HttpServletResponse res = (HttpServletResponse) response;
        HttpServletRequest req = (HttpServletRequest) request;

        res.setHeader("Access-Control-Allow-Origin", "*");
        res.setHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, OPTIONS");
        res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Accept-Encoding, Accept-Language, Host, Referer, Connection, User-Agent, authorization, sw-useragent, sw-version");

        if (req.getMethod().equals("OPTIONS")) 
        {
            res.setStatus(HttpServletResponse.SC_OK);
            return;
        }

        filterChain.doFilter(request, response);
    }

    @Override
    public void destroy() 
    {

    }
}

我的角代码只是试图使用GET方法(即。httpclient.GET('http://localhost:8080/api/getdata')将数据打印到浏览器控制台,但错误阻止了它的工作。我是不是在后端缺少了一个步骤?

共有1个答案

容飞掣
2023-03-14

您可以轻松地定义全局cors配置,只需在启动spring boot应用程序的主应用程序类中添加

  @Bean
  public WebMvcConfigurer corsConfigurer() {
    return new WebMvcConfigurer() {
      @Override
      public void addCorsMappings(CorsRegistry registry) {
       registry.addMapping("/**").allowedOrigins("http://localhost:8080")
                      .allowedMethods("PUT", "DELETE", "GET", "POST");
      }
    };
  }

更多细节请看这里

 类似资料:
  • 我第一次使用侦探需要一些帮助。我目前正在使用sleuth 2.2.3。释放我的要求是我想传播两个字段product id和product type,这样我就可以从其他微服务中读取这两个值,因为我正在使用baggage传播。

  • 我们目前正在使用侦探2.2.3. RELEASE,我们看不到在超文本传输协议标头中传递的字段userId没有传播。下面是我们的代码。 我们怀疑YML文件中的某些问题。我们尝试了以下所有选项,但均无效。 在回退中: %X{行李用户ID:-} 我们在超文本传输协议头中传递userId。

  • 我有一个过滤器(OncePerRequestFilter),它基本上拦截传入的请求并记录traceId、spanId等。它运行良好,这个过滤器位于一个公共模块中,该模块包含在其他项目中,以避免在我的所有微服务中包含spring sleuth依赖项,这就是我将它创建为库的原因,因为对库的任何更改对所有模块都是公共的。现在,我必须添加一个新的传播密钥,它需要通过http头(如trace和spanId)

  • 它是这篇文章的副本,并添加了信息(因为它不是其他类似问题的副本)。 我只是在新计算机上安装了Intellij的最新版本,无法使Maven在空项目中正常工作。 当Maven启动时,它试图下载所有的插件,但它停留在无限的下载中。我尝试添加一些依赖项,并获得该依赖项的无限下载 我发现很多人都有这样的问题,但这个解决方案对我不起作用。 此外,我试图在idea Maven设置中更新主存储库手册中的信息,并得

  • 我是JavaFX的新手。我用maven创建了JavaFX项目,并添加了所有依赖项。idea中的Project工作得很好,但当我在maven中构建它并尝试在目标文件夹中打开时,jar没有反应,它会给出以下错误。 (未知源)在com.sun.javafx.application.launcherImpl$$lambda$51/881058039。运行(Unkn自己的源)在com.sun.javafx.

  • 请提示我如何让侦察行李在联调系统中工作。它在测试通过模拟HTTP请求时按预期工作,但在测试直接调用服务时不工作。我的应用程序是(Spring Boot 2.5.4,Spring Cloud 2020.0.3): 应用yml: 测试: