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

为客户端Ajax请求构建服务器端代理

阅读更多
由于客户端浏览器的安全设置问题,从客户端JavaScript脚本中用XMLHttpRequest直接访问第三方的网址是被禁止的。如果从客户端脚本着手来解决这个问题,方案都不太理想。IE我是没尝试成功,Firefox则要考虑对脚本进行签名,然后通过PrivilegeManager来启用权限,这种方式太复杂。用IFrame可以避免这种问题,但是数据传递的问题需要解决。

最简单的方法就是在自己的服务器上添加一个代理,客户端脚本先把请求发送给代理,代理转发请求,把响应发回给客户端脚本。为此我做了一个简单的Servlet来完成此功能,思路很简单,就是对请求的URL打开一个URLConnection,然后读取流写到servlet的响应即可。

比如一个RSS阅读器,它需要访问某个RSS网址,客户端脚本先把RSS网址发送给servlet,servlet访问此网址,把响应发回即可。

java 代码
  1. public void doGet(HttpServletRequest request, HttpServletResponse response)   
  2.    throws ServletException, IOException {   
  3.   
  4.   String urlString = request.getParameter(”url”);   
  5.   writeResponse(response, urlString);   
  6.  }   
  7.   
  8. private void writeResponse(HttpServletResponse response, String urlString) throws ServletException{   
  9.   try {   
  10.    URL url = new URL(urlString);   
  11.    URLConnection urlConnection = url.openConnection();   
  12.    response.setContentType(urlConnection.getContentType());   
  13.    InputStream ins = urlConnection.getInputStream();   
  14.    OutputStream outs = response.getOutputStream();   
  15.    byte[] buffer = new byte[READ_BUFFER_SIZE];   
  16.    int bytesRead = 0;   
  17.    while ((bytesRead = ins.read(buffer, 0, READ_BUFFER_SIZE)) != -1) {   
  18.     outs.write(buffer, 0, bytesRead);   
  19.    }   
  20.    outs.flush();   
  21.    outs.close();   
  22.    ins.close();   
  23.   } catch (Exception e) {   
  24.    try {   
  25.     response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());   
  26.    } catch (IOException ioe) {   
  27.     throw new ServletException(ioe);   
  28.    }   
  29.   }   
  30.  }    
分享到:
评论

相关推荐

    客户端 ajax asp.net ajax

    结合客户端AJAX和ASP.NET AJAX,开发者可以创建更高效、更响应式的Web应用,同时保持ASP.NET的强大服务器端功能。例如,可以使用JavaScript和ASP.NET AJAX库(如jQuery和MicrosoftAjax.js)来实现复杂的用户交互,...

    服务器端判断Ajax请求

    ### 服务器端判断Ajax请求 在现代Web开发中,异步JavaScript与XML(Ajax)技术被广泛用于构建响应迅速、动态交互的应用程序。Ajax通过在后台与服务器进行数据交换,无需重新加载整个页面即可更新部分网页内容。因此...

    webservice(cxf)+ajax请求,客户端和服务器端

    【标题】:Web服务(CXF)+Ajax 请求:客户端与服务器端交互 【知识点详解】 Web服务在现代软件开发中扮演着至关重要的角色,它提供了不同系统间数据交换的标准方式。CXF 是一个流行的开源框架,用于创建和消费 ...

    A用Ajax技术构建浏览器客户端通讯机制.pdf

    Ajax技术可以实现异步模式的开发,客户端可以同时建立多个XMLHttpRequest对象向服务器端发送请求,并接收和处理返回的数据,从而实现客户端和服务器端的通讯。 Ajax技术的优点包括: * 实现异步模式的开发,减少...

    客户端调用服务器端例子

    在提供的文件列表中,"src"可能包含了服务器端的代码,比如Java Servlet或PHP文件,用于处理来自客户端的Ajax请求。而"WebContent"通常是Web应用的根目录,可能包含HTML、CSS和JavaScript文件,其中的JavaScript文件...

    客户端与服务器端通讯

    客户端与服务器端通讯是计算机网络中的基础概念,也是构建互联网应用程序的核心部分。在这个过程中,客户端通常指的是用户设备上的应用,如浏览器、手机APP或者桌面软件,而服务器端则是运行在远程计算机上的程序,...

    asp.net客户端AJAX

    ASP.NET AJAX提供了客户端和服务器端的错误处理机制,帮助开发者处理可能出现的异常,确保应用的稳定性和用户体验。 10. **集成与兼容性**: ASP.NET AJAX可以与ASP.NET MVC和Web Forms无缝集成,同时也支持各种...

    DWR3实现服务器端向客户端精确推送消息

    DWR3通过建立一个安全的AJAX(Asynchronous JavaScript and XML)通道,使得服务器端的Java对象能够直接与客户端的JavaScript代码交互。它通过JSON(JavaScript Object Notation)或XML格式传输数据,以提高数据交换...

    使用Atlas简化客户端Ajax编程

    3. **Ajax Extensions**:一组扩展.NET Framework的类库,为服务器端提供了Ajax功能的支持。 4. **Atlas Client Library**:包含一组JavaScript对象和函数,如PageRequestManager,用于处理Ajax请求和响应。 三、 ...

    ASP.NET AJAX 服务器端 源代码

    服务器端源代码通常包含处理AJAX请求的PageMethods或WebMethods。这些是静态方法,可以直接从JavaScript调用,用于执行服务器端操作并返回结果。例如,你可以创建一个WebMethod来获取数据库数据,然后在客户端更新一...

    用代理避免ajax跨域请求(手机验证码)

    当客户端发起Ajax请求时,它实际上请求的是代理服务器,然后由代理服务器转发请求到实际的目标服务器。因为请求是从同一源发送到代理服务器的,所以符合同源策略,不会触发跨域问题。代理服务器收到响应后,再将数据...

    ASP.NET Ajax客户端编程

    9. **状态管理**:在ASP.NET AJAX中,需要考虑客户端和服务器端的状态管理,因为AJAX请求可能会改变页面状态但不刷新整个页面。这包括ViewState、ControlState以及隐藏字段等。 10. **Error处理**:在客户端进行...

    软件工程,客户端与服务器端交互

    在软件工程领域,客户端与服务器端交互是构建网络应用程序的核心组成部分。这种交互模式通常被称为“客户端-服务器”架构,它是互联网应用的基础。在这个架构中,客户端(通常是用户使用的设备,如电脑、手机或平板...

    客户端向服务器端上传文件

    在客户端向服务器端上传文件的过程中,涉及到的主要技术包括前端交互、后端处理和文件传输协议。下面将分别从这三个方面详细讲解相关知识点。 首先,前端交互是用户与应用程序的接触点,这里通常会使用HTML、CSS和...

    Java+servlet+jsp页面ajax请求

    在AJAX请求中,Servlet负责处理来自客户端的AJAX请求,执行相关操作并返回JSON或XML格式的数据。 2. **JSP**:JSP是Java的视图层技术,可以用于创建动态HTML、XML或其他格式的文档。在AJAX场景下,JSP通常用来生成...

    ExtJs的服务器端控件实现

    7. **服务器端事件处理**:通过监听Ajax请求,服务器端可以响应ExtJS触发的事件,例如按钮点击、选择改变等,执行相应的逻辑。 8. **自定义控件(Custom Components)**:如果需要扩展ExtJS的功能,可以在服务器端...

    ASP.NET3.5 AJAX客户端编程精选166例(使用C#)

    - 示例:使用`$.ajax`方法发送AJAX请求,并根据返回的数据更新页面内容。 #### 五、实例分析 - **实例1:动态更新时间**: - 使用`Timer`控件每隔一段时间向服务器请求当前时间,并更新页面显示的时间。 - 需要...

    客户端 服务器端 简单聊天工具的DEMO

    服务器端接收到这些请求后,处理数据,可能包括解析消息、查找接收方、存储聊天记录等,然后将响应返回给客户端,客户端再将结果显示给用户。这种模式的优点在于,用户只需要一个浏览器就能访问服务,无需安装额外的...

    WebSocket服务器端和客户端示例

    标题中的“WebSocket服务器端和客户端示例”指的是一个完整的WebSocket通信系统的实例,包括了服务器端和客户端两部分。服务器端是基于.Net Framework 4.5的WinForm应用,这表明它使用C#语言编写,并且运行在Windows...

    ajax跨域解决办法

    4. **服务器代理**:在服务器端设置一个代理,将客户端的AJAX请求转发到目标服务器,然后将结果返回给客户端。这通常通过修改服务器配置或编写中间件实现,例如Apache或Nginx的反向代理功能。 5. **Flash跨域**:...

Global site tag (gtag.js) - Google Analytics