从AngularJS前端到Spring休息后端的CORS问题

问题描述 投票:0回答:1

我有前端AngularJS应用程序和Spring rest后端应用程序都部署在同一个tomcat同一个端口,它们的上下文不同。 我可以从Postman访问Spring rest端点。 但由于CORS策略,我的前端无法访问后端。 错误消息是

Access to XMLHttpRequest at 'http://sbr-devp-55:8080/BackendWS/administration/getLabels' from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

我尝试了以下方法:编写CORSFilter如下:

public class CORSFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
    HttpServletResponse response = (HttpServletResponse) res;
    response.setHeader("Access-Control-Allow-Origin", "*");
    response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
    response.setHeader("Access-Control-Max-Age", "3600");
    response.setHeader("Access-Control-Allow-Headers", "Content-Type, Access-Control-Allow-Headers,"
                        + " Authorization, X-Requested-With,startTime ");
    chain.doFilter(req, res);

}

public void init(FilterConfig filterConfig) {
    //initialization code
}

public void destroy() {
    //destroy code
}

我写了一个这样的初始化器:

public class BackendWSInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

@Override
protected Class<?>[] getRootConfigClasses() {
    return new Class[] { BackendWSConfiguration.class };
}

@Override
protected Class<?>[] getServletConfigClasses() {
    return null;
}

@Override
protected String[] getServletMappings() {
    return new String[] { "/" };
}

@Override
protected Filter[] getServletFilters() {

    Filter [] singleton = { new CORSFilter(),new OpenEntityManagerInViewFilter()};
    return singleton;
}

}

我还需要做什么? 为什么起源是http:// localhost:8080 ? 不是http:// sbr-devp-55:8080 ? 我是否必须在AngularJS方面做点什么? 奇怪的是,这在其他开发人员的机器上没有任何CORS问题。可以是任何证书问题吗? 错误消息不表示任何此类事情。

这是它在F12>控制台中显示的方式:

    POST http://sbr-devp-55:8080/BackendWS/administration/getLabels 404 (Not Found)
localization.js:108 {data: "", status: 404, headers: ƒ, config: {…}, statusText: "Not Found"}
config: data: {clientId: 92, projectId: 334, languageId: 1, userId: -1}
headers: {Content-Type: "application/json;", Accept: "application/json;", startTime: 1557157292135}method: "POST"
paramSerializer: ƒ ngParamSerializer(params)timeout: 600000
transformRequest: [ƒ]transformResponse: [ƒ]
url: "http://SBR-DEVP-55:8080/BackendWS/administration/getLabels"
__proto__: Objectdata: ""headers: ƒ (name)status: 404statusText: "Not Found"__proto__: Object
angularjs cors spring-rest
1个回答
0
投票

针对XMLHTTP请求报告的类似问题为什么我的JavaScript在请求的资源上出现“No'Access-Control-Allow-Origin'标头”错误,当Postman没有?

你在使用Angular <2吗?

对于其他2位开发人员,请检查传递的请求标头是什么,并与您的标准进行比较? 他们的机器中是否定义了任何代理?

© www.soinside.com 2019 - 2024. All rights reserved.