原理:通过本地的js,访问java程序,然后把返回的值传回js
得到跨域地址
function convertURL(url){
if(url.substring(0,7)=="http://"){
url = url.replace("?","&");
url ="Poxy.do?url="url;
}
return url;
}
同域服务端
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.OutputStreamWriter;
import java.net.*;
import java.util.Enumeration;
public class Proxy extends javax.servlet.http.HttpServlet {
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
throws javax.servlet.ServletException, java.io.IOException {
response.setContentType("text/html;charset=GB2312");
String url = request.getParameter("url");
StringBuffer param = new StringBuffer();
Enumeration enu = request.getParameterNames();
int total = 0;
while(enu.hasMoreElements()){
String name = (String)enu.nextElement();
if(!name.equals("url")){
if(total == 0){
param.append(name).append("=").append(URLEncoder.encode(request.getParameter(name),"UTF-8"));
} else{
param.append("&").append(name).append("=").append(URLEncoder.encode(request.getParameter(name),"UTF-8"));
}
total++;
}
}
PrintWriter out = response.getWriter();
if(url != null){
URL connect = new URL(url.toString());
URLConnection connection = connect.openConnection();
connection.setDoOutput(true);
OutputStreamWriter paramout = new OutputStreamWriter(connection.getOutputStream());
paramout.write(param.toString());
paramout.flush();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),"GB2312"));
String line;
while((line = reader.readLine()) != null){
out.println(line);
}
paramout.close();
reader.close();
}
}
protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException {
response.setContentType("text/html;charset=GB2312");
StringBuffer url = new StringBuffer();
url.append(request.getParameter("url"));
Enumeration enu = request.getParameterNames();
int total = 0;
while(enu.hasMoreElements()){
String name = (String)enu.nextElement();
if(!name.equals("url")){
if(total == 0){
url.append("?").append(name).append("=").append(URLEncoder.encode(request.getParameter(name),"UTF-8"));
} else{
url.append("&").append(name).append("=").append(URLEncoder.encode(request.getParameter(name),"UTF-8"));
}
total++;
}
}
PrintWriter out = response.getWriter();
if(url != null){
URL connect = new URL(url.toString());
BufferedReader reader = new BufferedReader(new InputStreamReader(connect.openStream(),"GB2312"));
String line;
while((line = reader.readLine()) != null){
out.println(line);
}
reader.close();
}
// http://www.sohu.com/index.html?name=123&id=000
// Proxy?url=http://www.sohu.com/index.html&name=123&id=000
// url=http://www.sohu.com/index.html&name=123&id=000
// http://www.sohu.com/index.html?id=000&name=123
}
}
分享到:
相关推荐
Nginx 跨域问题解决方案 Nginx 是一个流行的开源 Web 服务器软件,广泛应用于 Web 服务器管理。然而,在使用 Nginx 进行服务器管理时,经常会遇到跨域问题。跨域问题是指在不同的域名、端口或协议下,无法访问...
然而,有时我们需要在不同的域之间进行数据交换,例如API调用或共享cookies,这时就需要解决跨域问题。本文将深入探讨JavaScript插件如何解决双向跨域问题,并通过具体的插件实例——jcrossdomain,来阐述其实现方式...
解决arcgis server跨域问题: 1、停掉ArcGIS Server的服务。 2、 打开<ArcGIS Server> \framework\runtime\tomcat\conf\web.xml,注册跨域bean 3、lib下拷贝 cors-filter-2.5.jar java-property-utils-1.9.1.jar包 4...
3. **iframe跨域问题**:当iframe加载的页面与包含它的页面不在同一个域时,就会出现跨域问题,导致无法直接通过JavaScript进行通信,如获取iframe内的内容、设置iframe的属性等。 **二、iframe跨域的解决方案** 1...
在Web应用开发中,跨域问题是一个常见的挑战,特别是在利用Ajax进行异步数据交互时。由于浏览器的安全策略,不同源(域名、协议或端口)之间的请求会被阻止,除非服务器允许这些跨域请求。在GeoServer的环境中,当...
在IT行业中,尤其是在Web开发领域,跨域问题是一个常见的挑战,尤其当涉及到GIS(地理信息系统)服务时,如Geoserver。Geoserver是一个开源的、基于Java的服务器,用于发布和管理地理空间数据。当从一个源(如浏览器...
### 前端后端跨域问题解析及解决方案 #### 跨域问题概述 跨域问题,即Cross-Origin Resource Sharing(CORS),是指浏览器出于安全考虑,在不同源之间执行网络请求时实施的一种限制机制。根据同源策略的规定,只有...
**Nginx安装与解决跨域问题** 在现代Web开发中,由于浏览器的同源策略,跨域问题经常出现,限制了不同源之间的通信。Nginx作为一个高性能的反向代理服务器,常被用于处理此类问题。本篇将详细介绍如何在Linux环境下...
【标题】:“Tomcat配置解决跨域问题” 在Web开发中,跨域(Cross-Origin)是一种常见的安全限制,它阻止浏览器从一个源加载资源到另一个不同的源。这主要是为了防止恶意脚本通过注入来窃取数据。然而,在进行前后...
当我们在Cesium中尝试加载由Geoserver提供的地图服务时,可能会遇到跨域问题。这个问题主要是由于浏览器的安全策略限制了不同源之间的通信。以下是对这个问题的详细解释和解决方法。 首先,理解“跨域”是什么至关...
跨域问题在现代Web开发中是一个常见的挑战,尤其是在前后端分离的架构中。浏览器的同源策略限制了JavaScript从一个源获取另一个源的数据,而Nginx作为一个强大的反向代理服务器,可以有效地解决这个问题。本篇文章将...
标题中的“geoserver跨域问题jar包”指的是在使用GeoServer时遇到的跨域(Cross-Origin)限制问题。GeoServer是一款开源的地理信息系统(GIS)服务器,它允许用户发布地图服务并与其他Web应用程序交互。当不同的源...
特别是使用file协议访问本地文件时,常见的跨域问题及其解决方案是开发者不得不面对的问题。 首先,同源策略要求“协议+域名+端口”完全一致的请求才被认为是同源。基于这种策略,如果一个文档包含来自不同源的资源...
UEditor允许用户在编辑器中插入图片、视频等多媒体内容,但当涉及到图片上传时,可能会遇到跨域问题。本文将详细探讨如何解决UEditor在前后端分离项目中上传图片的跨域问题。 首先,跨域是浏览器的一个安全机制,...
Java CXF Webservice接口在处理Web服务时,可能会遇到跨域问题,这通常是由于浏览器的安全策略限制了不同源之间的通信。解决这个问题的关键在于理解和应用CORS(Cross-Origin Resource Sharing)机制。CORS允许...
本文将详细介绍如何使用axios在Vue.js项目中实现数据交互,并针对跨域问题给出解决方案。 首先,要在Vue.js项目中使用axios进行数据交互,首先需要安装axios模块。这可以通过npm或yarn来完成: ```bash npm ...
window.name 解决跨域问题的文档 window.name 传输技术是 Thomas Frank 发明的,旨在解决 cookie 的一些劣势,例如每个域名 4 x 20 Kb 的限制、数据只能是字符串、设置和获取 cookie 语法的复杂等等。后来,Kris ...
标题中的“Geoserver解决Tomcat跨域问题文件”指的是针对使用Geoserver与Tomcat部署Web服务时遇到的跨域限制的解决方案。在Web开发中,跨域问题是一个常见的安全问题,它源于浏览器的同源策略,限制了JavaScript从一...
在本文中,我们将详细探讨如何解决Vue调用Spring Boot接口时遇到的403跨域问题。 ### CORS问题简介 跨域资源共享(CORS)是一种安全机制,它限制了Web页面上脚本在不同域之间请求资源的能力。当一个Web应用试图...
"b3dm翻译和跨域问题"这个主题涉及到两个关键的技术点:b3dm格式的数据处理以及Web应用中的跨域资源共享(CORS)。 首先,我们来详细了解一下b3dm格式。b3dm是Batched 3D Model的缩写,是Cesium用来高效加载3D模型...