java使用代理解决跨域问题
2017-11-26 20:29
567 查看
为什么需要proxy.jsp代理文件
由于浏览器实现的同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源,所以AJAX是不允许跨域访问的。为了解决这一问题,我们使用java代码来访问服务。当javascript发出一个请求,首先访问本地的java代码,然后调用我们的服务。proxy.jsp就是实现这一过程的java代码。如何配置代理文件
1.在项目的根目录下创建proxy.jsp文件。该文件内容如下<%@ page import="java.io.*" %> <%@ page import="java.net.URL" %> <%@ page import="java.net.HttpURLConnection" %> <%@ page session="false" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%! void copy(InputStream in, OutputStream out, boolean save) throws IOException { try{ byte[] buffer = new byte[1024]; int count = 0; while((count =in.read(buffer)) > 0){ out.write(buffer,0,count); } } finally { out.close(); in.close(); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String reqUrl = request.getQueryString(); URL url = new URL(reqUrl); HttpURLConnection con = (HttpURLConnection)url.openConnection(); con.setDoOutput(false); con.setRequestMethod("GET"); response.setContentType(con.getContentType()); OutputStream out = response.getOutputStream(); InputStream in = con.getInputStream(); copy(in,out,false); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String reqUrl = request.getQueryString(); URL url = new URL(reqUrl); HttpURLConnection con = (HttpURLConnection)url.openConnection(); con.setDoOutput(true); con.setRequestMethod("POST"); if(request.getContentType() != null) { con.setRequestProperty("Content-Type", request.getContentType()); } OutputStream destCout = con.getOutputStream(); copy(request.getInputStream(),destCout,true); InputStream in = con.getInputStream(); OutputStream out = response.getOutputStream(); copy(in,out,false); } %> <% out.clear(); out = pageContext.pushBody(); String method = request.getMethod(); if("GET".equals(method)){ doGet(request,response); } else if("POST".equals(method)){ doPost(request,response); } %>
相关文章推荐
- Nginx 的使用配置并利用nginx 反向代理解决跨域问题
- 解决spring使用动态代理类型转换失败的问题--java.lang.ClassCastException: com.sun.proxy.$Proxy$ cannot be cast to ...
- 解决spring使用动态代理类型转换失败的问题--java.lang.ClassCastException: com.sun.proxy.$Proxy$ cannot be cast to ...
- 使用webpack-dev-server设置反向代理解决前端跨域问题
- java使用cors解决跨域问题
- Mac下使用nginx反向代理服务器解决资源跨域问题
- 使用代理解决js跨域问题
- vue打包使用Nginx代理解决跨域问题
- 解决在java的ssm框架中使用ajax提交数据遇到的跨域问题
- java使用cors解决跨域问题,服务器端开发为语言为java
- 解决spring使用动态代理类型转换失败的问题--java.lang.ClassCastException: com.sun.proxy.$Proxy$ cannot be cast to ...今天
- java中使用Cookie替代Session解决跨域Session失效问题
- java 浅析跨域问题以及如何使用Cors解决前后端分离部署项目所遇到的跨域问题
- axios 使用代理解决跨域问题
- jsonp和java联合使用解决跨域问题
- vue.js使用代理和使用Nginx来解决跨域的问题
- 浅析使用代理解决WFS服务跨域的问题
- 利用AJAX跨域读取RSS---使用AJAX代理解决AJAX跨域问题
- 使用asx3m与xstream配合解决flex与java利用httpservice传递xml数据问题
- 使用getJSON解决jquery跨域问题