【问题标题】:Consuming a RESTful Web Service with jQuery使用 jQuery 使用 RESTful Web 服务
【发布时间】:2015-10-07 16:13:56
【问题描述】:

关于指南:

https://spring.io/guides/gs/consuming-rest-jquery/

我明白了:

XMLHttpRequest cannot load h__p://rest-service.guides.spring.io/greeting.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'h__p://localhost:8000' is therefore not allowed access.

很抱歉这个菜鸟问题,但我需要做什么才能测试上述页面上的代码?

谢谢大家!

【问题讨论】:

    标签: jquery spring web-services rest


    【解决方案1】:

    这似乎是一个 cors 问题。这意味着您不是从春天而是从 elseweare 为应用程序提供服务。您必须创建一个过滤器才能配置标题

    @Component
    public class CORSFilter implements Filter{
    
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
    
        }
    
        @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, OPTIONS, DELETE");
            response.setHeader("Access-Control-Max-Age", "3600");
            response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
            chain.doFilter(req, res);
    
        }
    
        @Override
        public void destroy() {
    
        }
    
    }
    

    应该可以解决的

    【讨论】:

      【解决方案2】:

      这看起来像是一个 CORS 问题。我以前用我的 spring mvc 应用程序遇到过这个问题。我有一个解决它的@component CORS 实现。 您可能还需要配置前端以使用 CORS。

      另外请记住,对于安全问题,允许任何来源访问您的 API 可能并不安全。因此,不建议用于生产实现(“Access-Control-Allow-Origin”、“*”)。

      原文来源:http://patrickgrimard.com/2013/12/12/cross-origin-resource-sharing-cors-requests-with-spring-mvc/

          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.HttpServletResponse;
          import org.springframework.stereotype.Component;
      
          @Component
          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-Origin", "*");
                  response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
                  response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
                  response.addHeader("Access-Control-Allow-Headers", "Content-Type");
                  chain.doFilter(req, res);
              }
      
              public void init(FilterConfig filterConfig) {}
      
              public void destroy() {}
      
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-16
        • 2012-08-16
        相关资源
        最近更新 更多