跨域访问简单来说就是A网站的JavaScript代码试图访问B网站,包括提交内容和获取内容.由于安全原因,跨域访问是被各大浏览器所默认禁止的.在广域网环境中,由于浏览器的安全限制,网络连接的跨域访问时不被允许的,XmlHttpRequest也不例外。但有时候跨域访问资源是必需的。
我们不能在浏览器端直接使用AJAX来跨域访问资源,但是在服务器端是没有这种跨域安全限制的。所以,我们只需要让服务器端帮我们完成“跨域访问”的工作,然后在浏览器端用AJAX获取服务器端“跨域访问”的结果就可以了。这就是所谓的在服务器端创建一个 XmlHttpRequest代理,通过这个代理来访问其他域名下的资源。
使用XmlHttpRequest访问同一域名下的资源:直接访问:
用服务器端的XmlHttpRequest代理来跨域访问资源:
if(url.indexOf("http://")==0){ url=url.replace("?","&"); url="Proxy?url"+url; }
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(); } }
相关推荐
### Ajax跨域问题及其解决方案 #### 一、Ajax跨域问题概述 在现代Web开发中,前后端分离架构越来越流行。这种模式下,前端页面与后端服务通常部署在不同的服务器上,甚至可能位于不同的域名下。当浏览器发起对不同...
在Ajax(Asynchronous JavaScript and XML)技术的基础上,Atlas致力于简化前端开发,实现页面的无刷新更新,提高用户体验。这个压缩包中的文件很可能包含了关于如何使用Atlas进行Ajax开发的详细教程和实例源代码。 ...
7. **跨域问题**:由于同源策略的限制,Ajax请求通常只能访问同一域下的资源。如果需要跨域,需要服务器端开启CORS(Cross-Origin Resource Sharing)或者使用JSONP(JSON with Padding)技术。 8. **安全考虑**:...
### 什么是Ajax跨域 Ajax跨域问题是前端开发者经常遇到的一个难题。所谓“跨域”,主要是指浏览器出于安全考虑实施的一种限制策略——“同源策略”。同源策略规定,来自不同源的“文档”或脚本只能读取或设置当前...
**AJAX——新手快车道** 在当今的Web开发中,AJAX(Asynchronous JavaScript and XML)已经成为构建动态、交互性极强的网页不可或缺的技术。它允许网页在不刷新整个页面的情况下,通过后台与服务器进行数据交换,...
跨域访问是网络开发中非常常见的一种需求,尤其是在现代Web应用中,不同域名下的资源需要相互访问以便集成和分享数据。在JavaScript中,这种跨域的资源访问被称为“跨域请求”,通常会受到同源策略的限制。同源策略...
7. **跨域Ajax**:CORS(Cross-Origin Resource Sharing)是现代浏览器支持的一种跨域访问策略,允许服务器指定哪些源可以访问其资源。 8. **封装Ajax函数**:为了提高代码复用性,通常会将Ajax请求封装成一个函数...
- CORS(Cross-Origin Resource Sharing)是AJAX跨域访问的解决方案,通过服务器端设置特定的HTTP头部来允许跨域请求。 5. **安全性**: - **同源策略**:限制了AJAX只能向同源(协议+域名+端口相同)的网站发送...
- **CORS (Cross-Origin Resource Sharing)**: 是现代浏览器提供的一种跨域访问机制,通过设置服务器头允许特定域名的跨域请求。 ### 7. Ajax的优点与挑战 优点: - 提升用户体验:页面无需刷新,加载更快,操作更...
在前端开发中,跨域问题是一个常见的挑战,由于浏览器的安全策略——同源策略,JavaScript通常只能访问和操作与当前页面同源(协议、域名、端口相同)的资源。然而,随着Web应用的发展,前后端分离的需求使得跨域...
本文探讨了如何利用动态script标签技术和JSON数据交换格式来解决Ajax应用程序中跨域访问第三方Web服务的问题。跨域访问是Web开发中常见的难题之一,尤其是在Ajax应用中,因为浏览器出于安全考虑对JavaScript脚本实施...
AJAX的核心是JavaScript对象——XMLHttpRequest,它允许JavaScript在页面不刷新的情况下与服务器进行通信。当用户触发一个AJAX请求时,XMLHttpRequest对象会创建一个新的HTTP请求,并在后台与服务器进行数据交换。...
#### 四、AJAX的核心——XMLHttpRequest对象 XMLHttpRequest对象是实现AJAX的关键组件,用于执行异步HTTP请求。通过它,可以实现客户端与服务器之间的非同步数据交互。 #### 五、传统Web开发与使用AJAX进行开发的...
AJAX 的核心是 JavaScript 对象——XMLHttpRequest,它允许 JavaScript 在后台与服务器进行通信。 ### 1. XMLHttpRequest 对象 XMLHttpRequest 是 AJAX 的基础,它创建了一个与服务器端通信的通道。使用这个对象,...
jQuery提供了便捷的$.ajax()函数来实现Ajax请求。然而,当涉及到跨域请求时,即从一个域名下的网页请求另一个域名的数据,浏览器会受到同源策略的限制,这可能导致安全问题。为了解决这个问题,现代浏览器支持CORS...
AJAX 的核心是 JavaScript 对象——XMLHttpRequest,它允许 JavaScript 在后台与服务器进行通信,而不会中断用户的操作。 **1. XMLHttpRequest对象** XMLHttpRequest(XHR)是 AJAX 的基础,它提供了一种在浏览器...
AJAX 的核心是 JavaScript 对象——XMLHttpRequest,它允许 JavaScript 在后台与服务器进行通信,而不会中断用户的交互。 ### 1. XMLHttpRequest 对象 XMLHttpRequest(XHR)是 AJAX 的基础,它是一个内置于浏览器...