JavaScript 跨域资源共享 (CORS) 基础实现指南

作者:拾光时间:2026-10-30 09:57:26浏览:304

本文解析 JavaScript 跨域资源共享 (CORS) 的提出背景,即解决 XHR 对象的安全限制。重点介绍如何在不同浏览器中实现跨域请求,包括现代浏览器与 IE 的特殊处理,并提供完整的跨浏览器创建 CORS 对象的代码示例及关键属性说明。

CORS 概述与背景

本文深入解析 JavaScript 跨域资源共享技术,旨在提供清晰实用的参考内容。

跨域限制与解决方案

1. 跨域资源共享 (CORS) 的提出背景 XHR 对象在实现 Ajax 时存在严格的安全限制,规定其只能访问与包含它的页面位于同一域中的资源。这一限制促使了跨域资源共享机制的诞生,以解决不同域名间的数据交互需求。

跨浏览器 CORS 实现代码

2. 跨浏览器实现跨域请求的方法 实现跨域请求需兼顾不同浏览器的兼容性,具体实现方式见下文代码示例。

核心代码解析


  // 跨浏览器创建并返回CORS对象
  // param method : 请求的方式, get or post
  // param url : 跨域请求的url
  // return xhr : 返回的跨域资源对象
  function createCORSRequest(method, url){
    var xhr = new XMLHttpRequest(); 
    if ("withCredentials" in xhr){
      xhr.open(method, url, true);  // CORS都是通过异步的请求
    } else if (typeof XDomainRequest != "undefined"){  // IE
      vxhr = new XDomainRequest();
      xhr.open(method, url);
    } else {
      xhr = null;
    }
    return xhr;
  }
  var request = createCORSRequest("get", "http://localhost/aaa/dome2.php");
  if (request){
    // 用于替代onreadystatechange 检测成功,表示接受数据完毕
    request.onload = function(){
      // 对响应的信息进行处理
      alert(request.responseText);  // 取得响应的内容
    };
    // 用于替代onreadystatechange 检测错误。
    request.onerror = function(){
      // 对响应的信息进行处理
    };
    // 用于停止正在进行的请求。
    request.onabort = function(){
      // 对响应的信息进行处理
      alert(request.responseText);
    };
    // 跨域发送请求
    request.send();
  }

总结

以上内容为本文核心总结,希望能为读者的技术学习提供有效帮助。

作者最新文章