`
pavel
  • 浏览: 927983 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

跨域问题

    博客分类:
  • ajax
阅读更多

 

原理:通过本地的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跨域问题,解决多端口,多ip问题

    Nginx 跨域问题解决方案 Nginx 是一个流行的开源 Web 服务器软件,广泛应用于 Web 服务器管理。然而,在使用 Nginx 进行服务器管理时,经常会遇到跨域问题。跨域问题是指在不同的域名、端口或协议下,无法访问...

    javascript插件 解决双向跨域问题

    然而,有时我们需要在不同的域之间进行数据交换,例如API调用或共享cookies,这时就需要解决跨域问题。本文将深入探讨JavaScript插件如何解决双向跨域问题,并通过具体的插件实例——jcrossdomain,来阐述其实现方式...

    完美解决iframe跨域问题

    3. **iframe跨域问题**:当iframe加载的页面与包含它的页面不在同一个域时,就会出现跨域问题,导致无法直接通过JavaScript进行通信,如获取iframe内的内容、设置iframe的属性等。 **二、iframe跨域的解决方案** 1...

    GeoServer跨域问题.zip

    在Web应用开发中,跨域问题是一个常见的挑战,特别是在利用Ajax进行异步数据交互时。由于浏览器的安全策略,不同源(域名、协议或端口)之间的请求会被阻止,除非服务器允许这些跨域请求。在GeoServer的环境中,当...

    解决arcgis server跨域问题

    解决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...

    Geoserver跨域问题解决方案

    在IT行业中,尤其是在Web开发领域,跨域问题是一个常见的挑战,尤其当涉及到GIS(地理信息系统)服务时,如Geoserver。Geoserver是一个开源的、基于Java的服务器,用于发布和管理地理空间数据。当从一个源(如浏览器...

    前端后端跨域问题

    ### 前端后端跨域问题解析及解决方案 #### 跨域问题概述 跨域问题,即Cross-Origin Resource Sharing(CORS),是指浏览器出于安全考虑,在不同源之间执行网络请求时实施的一种限制机制。根据同源策略的规定,只有...

    file协议导致的跨域问题以及解决方案.docx

    同源策略与 File 协议导致的跨域问题解决方案 同源策略是出于安全考虑而诞生的约定,规定了只能在本域内进行资源访问。所谓同源是指“协议+域名+端口”三者相同。不同源之间进行资源访问,就需要跨域。特殊地,有三...

    nginx安装, 解决跨域问题

    **Nginx安装与解决跨域问题** 在现代Web开发中,由于浏览器的同源策略,跨域问题经常出现,限制了不同源之间的通信。Nginx作为一个高性能的反向代理服务器,常被用于处理此类问题。本篇将详细介绍如何在Linux环境下...

    Cesium加载Geoserver跨域问题

    当我们在Cesium中尝试加载由Geoserver提供的地图服务时,可能会遇到跨域问题。这个问题主要是由于浏览器的安全策略限制了不同源之间的通信。以下是对这个问题的详细解释和解决方法。 首先,理解“跨域”是什么至关...

    Tomcat配置解决跨域问题

    【标题】:“Tomcat配置解决跨域问题” 在Web开发中,跨域(Cross-Origin)是一种常见的安全限制,它阻止浏览器从一个源加载资源到另一个不同的源。这主要是为了防止恶意脚本通过注入来窃取数据。然而,在进行前后...

    nginx解决跨域问题的实例方法

    跨域问题在现代Web开发中是一个常见的挑战,尤其是在前后端分离的架构中。浏览器的同源策略限制了JavaScript从一个源获取另一个源的数据,而Nginx作为一个强大的反向代理服务器,可以有效地解决这个问题。本篇文章将...

    真正解决百度编辑器UEditor上传图片跨域问题.docx

    UEditor允许用户在编辑器中插入图片、视频等多媒体内容,但当涉及到图片上传时,可能会遇到跨域问题。本文将详细探讨如何解决UEditor在前后端分离项目中上传图片的跨域问题。 首先,跨域是浏览器的一个安全机制,...

    java cxf webservice接口解决跨域问题

    Java CXF Webservice接口在处理Web服务时,可能会遇到跨域问题,这通常是由于浏览器的安全策略限制了不同源之间的通信。解决这个问题的关键在于理解和应用CORS(Cross-Origin Resource Sharing)机制。CORS允许...

    vue中axios实现数据交互与跨域问题

    本文将详细介绍如何使用axios在Vue.js项目中实现数据交互,并针对跨域问题给出解决方案。 首先,要在Vue.js项目中使用axios进行数据交互,首先需要安装axios模块。这可以通过npm或yarn来完成: ```bash npm ...

    window.name解决跨域问题的文档

    window.name 解决跨域问题的文档 window.name 传输技术是 Thomas Frank 发明的,旨在解决 cookie 的一些劣势,例如每个域名 4 x 20 Kb 的限制、数据只能是字符串、设置和获取 cookie 语法的复杂等等。后来,Kris ...

    geoserver跨域问题jar包

    标题中的“geoserver跨域问题jar包”指的是在使用GeoServer时遇到的跨域(Cross-Origin)限制问题。GeoServer是一款开源的地理信息系统(GIS)服务器,它允许用户发布地图服务并与其他Web应用程序交互。当不同的源...

    Geoserver解决Tomcat跨域问题文件.rar

    标题中的“Geoserver解决Tomcat跨域问题文件”指的是针对使用Geoserver与Tomcat部署Web服务时遇到的跨域限制的解决方案。在Web开发中,跨域问题是一个常见的安全问题,它源于浏览器的同源策略,限制了JavaScript从一...

    解决Vue调用springboot接口403跨域问题

    在本文中,我们将详细探讨如何解决Vue调用Spring Boot接口时遇到的403跨域问题。 ### CORS问题简介 跨域资源共享(CORS)是一种安全机制,它限制了Web页面上脚本在不同域之间请求资源的能力。当一个Web应用试图...

    b3dm翻译和跨域问题

    "b3dm翻译和跨域问题"这个主题涉及到两个关键的技术点:b3dm格式的数据处理以及Web应用中的跨域资源共享(CORS)。 首先,我们来详细了解一下b3dm格式。b3dm是Batched 3D Model的缩写,是Cesium用来高效加载3D模型...

Global site tag (gtag.js) - Google Analytics