`
xifan
  • 浏览: 3057 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

springMVC跨域访问

 
阅读更多

@Controller
@RequestMapping("/AjaxProxy")
public class AjaxProxyController {

        @RequestMapping(value = "/proxy")
        @ResponseBody
        public final void proxyAjaxCall(
                        @RequestParam(required = true, value = "url") String url,
                        HttpServletRequest request, HttpServletResponse response)
                        throws IOException {

                // URL needs to be url decoded
                url = URLDecoder.decode(url, "utf-8");

                // 此处主义要设置OutputStreamWriter的编码, 否则使用系统的默认字符编码
                OutputStreamWriter writer = new OutputStreamWriter(
                                response.getOutputStream(), response.getCharacterEncoding());
                HttpClient client = new HttpClient();
                try {

                        HttpMethod method = null;

                        // Split this according to the type of request
                        if (request.getMethod().equals("GET")) {

                                method = new GetMethod(url);

                        } else if (request.getMethod().equals("POST")) {

                                method = new PostMethod(url);

                                // Set any eventual parameters that came with our original
                                // request (POST params, for instance)
                                Enumeration<String> paramNames = request.getParameterNames();
                                while (paramNames.hasMoreElements()) {

                                        String paramName = paramNames.nextElement();
                                        ((PostMethod) method).setParameter(paramName,
                                                        request.getParameter(paramName));
                                }

                        } else {

                                throw new NotImplementedException(
                                                "This proxy only supports GET and POST methods.");
                        }

                        method.getParams().setParameter(
                                        HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");

                        // Execute the method
                        client.executeMethod(method);

                        // Set the content type, as it comes from the server
                        Header[] headers = method.getResponseHeaders();
                        for (Header header : headers) {

                                if ("Content-Type".equalsIgnoreCase(header.getName())) {

                                        response.setContentType(header.getValue());
                                }
                        }

                        String responseBody = method.getResponseBodyAsString();

                        // Write the body, flush and close
                        writer.write(responseBody);
                        writer.flush();
                        writer.close();

                } catch (HttpException e) {

                        // log.error("Oops, something went wrong in the HTTP proxy", null,
                        // e);
                        writer.write(e.toString());
                        throw e;

                } catch (IOException e) {

                        e.printStackTrace();
                        writer.write(e.toString());
                        throw e;
                }
        }
}
在 openlayers 中代理的使用:
OpenLayers.ProxyHost = '/XXXXXX/AjaxProxy/proxy.do?url=';
XXXXXX是项目名字

转载 

分享到:
评论

相关推荐

    springmvc跨域处理和过滤器方式跨域处理主要代码

    在Spring MVC中,跨域问题通常发生在Web应用中,当客户端(如JavaScript的Ajax请求)尝试从一个域名访问另一个域名的资源时。由于浏览器的安全策略,这种行为默认是被禁止的,这被称为“同源策略”。然而,在现代Web...

    基于Spring和Spring MVC实现可跨域访问的REST服务

    在IT行业中,构建可跨域访问的REST服务是常见的需求,特别是在Web开发中。这篇博客“基于Spring和Spring MVC实现可跨域访问的REST服务”深入探讨了如何使用这两个流行的Java框架来创建这样的服务。Spring作为核心...

    SpringMVC CORS跨域测试包

    如果该头值包含请求来源,则浏览器允许跨域访问。 2. **SpringMVC中的CORS配置**:SpringMVC提供了多种方式配置CORS,如使用`@CrossOrigin`注解、配置`CorsRegistry`或者自定义过滤器。 - **@CrossOrigin注解**:...

    SpringMVC的跨域解决方案.docx

    **SpringMVC跨域解决方案** 跨域问题在Web开发中是一个常见的挑战,它涉及到浏览器的安全策略,限制了JavaScript从一个源向另一个源发起HTTP请求的能力。简单来说,如果请求的URL与当前页面的源(协议+域名+端口)...

    SpringMvc的跨域解决方案_2.docx

    跨域是指Web浏览器在访问不同域名下的资源时,由于同源策略(Same-origin policy)的限制而产生的问题。同源策略是为了提高Web安全而引入的一种机制,它规定了一个网页只能请求来自相同源的资源,这里的“源”指的是...

    springmvc+hibernate rest 架构

    综上所述,这个项目展示了如何利用SpringMVC处理HTTP请求,通过Hibernate与数据库交互,以及如何构建RESTful API和实现用户验证与跨域访问。开发者可以在此基础上进一步学习和实践,掌握Web应用开发的核心技术。

    springmvc4.0+spring-security3.2+mybatis3.3+mysql整合的登陆功能,

    Spring Security 提供了认证(Authentication)和授权(Authorization)的机制,比如它可以检查用户的用户名和密码,验证登录尝试,并决定用户是否有权限访问特定的资源。 **MyBatis** MyBatis 是一个优秀的持久层...

    springmvc+shiro jar

    2. **授权(Authorization)**:Shiro 可以进行细粒度的权限控制,例如基于角色的访问控制(RBAC)。 3. **会话管理(Session Management)**:Shiro 不依赖于 Servlet容器,可以跨域管理会话。 4. **缓存支持**:...

    Spring MVC 与 CORS跨域的详细介绍

    这将允许来自 http://www.examples.com 的跨源请求访问 /test 接口。 总结 本文对 Spring MVC 与 CORS 跨域的详细介绍,包括 CORS 的知识点和如何在 Spring MVC 中配置 CORS。CORS 将请求分为两类:简单请求和非...

    pdfjs 跨域预览文件(完整版t)

    8. **安全考虑**:虽然 CORS 允许跨域访问,但也要注意不要泄露敏感信息。只有在明确需要的情况下,才应开启 CORS,并对请求来源进行严格的限制。 通过深入理解这些知识点并结合提供的“pdfjs跨域加载资料”,你...

    springMVC+Mybaits+dwr示例

    3. 业务服务层(Service)和数据访问层(DAO)的实现,利用MyBatis进行数据库操作。 4. 控制器(Controller)类,处理HTTP请求,调用Service层的方法,并将结果返回给前端。 5. DWR的相关配置,如dwr.xml,声明可供...

    SpringBoot集成SpringMVC例子.docx

    - **跨域设置**:通过`addCorsMappings`方法可以配置CORS策略,允许不同源的请求访问: ```java @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins(...

    SpringMVC+Extjs4案例

    它遵循Model-View-Controller设计模式,提供了一种松耦合的架构,使得开发人员能够更方便地管理业务逻辑、视图和数据访问。 - 在SpringMVC中,控制器(Controller)负责接收HTTP请求,调用服务层方法处理业务,然后...

    springmvc利用jquery实现ajax的例子

    - 确保Spring MVC的MVC配置正确无误,特别是对于Ajax请求,可能需要设置跨域访问控制(CORS)。 - 如果返回的数据是JSON格式,使用`@ResponseBody`时,Spring MVC默认使用`MappingJackson2HttpMessageConverter`...

    使用SessionListener+持久化Session+Springmvc拦截器实现单点登录

    单点登录(Single Sign-On,简称SSO)是一种在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统的技术。在这个过程中,`SessionListener`、持久化`Session`和`Springmvc拦截器`是关键组件,让...

    springMVC+hibernate+dwr+smartClient

    **SpringMVC、Hibernate、DWR与SmartClient的整合应用** ...同时,这也是一个很好的起点,可以在此基础上扩展出更复杂的功能,例如添加更多的业务逻辑、优化数据访问性能,或是改进用户界面设计。

    springmvc shiro框架

    5. **@Service** 和 **@Repository**:分别标记服务层和数据访问层的类,配合 Spring 的依赖注入功能。 6. **ModelAndView**:用于返回视图名和模型数据。 7. **视图解析器**:如 InternalResourceViewResolver,将...

    Spring Boot Redis Session 共享(Ajax 跨域)

    在现代Web应用开发中,数据共享和跨域访问是常见的需求。Spring Boot作为一个轻量级的框架,提供了方便快捷的方式来实现这些功能。本教程将详细讲解如何在Spring Boot项目中利用Redis来存储和共享Session,并解决...

    Shiro + Hibernate5 + Spring5 + SpringMVC5 的jar

    Shiro的核心功能包括用户认证(验证用户身份)、授权(决定用户能否访问资源)、会话管理(如跨域会话支持)以及密码学支持(如哈希和加密)。它设计简洁,易于理解和集成,适合各种大小的项目。 Hibernate5是Java...

Global site tag (gtag.js) - Google Analytics