

新闻资讯
技术百科JS无法直接绕过同源策略跨域请求XML,需服务端配置CORS响应头(如Access-Control-Allow-Origin)并正确处理预检请求;前端可正常使用fetch或XMLHttpRequest请求XML资源。
JS 本身不能直接绕过浏览器的同源策略去发起跨域 XML 请求(比如用 XMLHttpRequest 或 fetch 请求一个不同源的 XML 文件),但可以通过服务端配合开启 CORS(Cross-Origin Resource Sharing)来合法支持。关键不在 JS 写法,而在服务端响应头是否正确配置。
浏览器在发送跨域请求前会先发一个 OPTIONS 预检请求(非简单请求时),服务端需响应并允许该来源访问。核心响应头包括:
https://your-app.com;设为 * 表示允许任意源(但此时不能携带凭证)GET, POST, OPTIONS
Content-Type, X-Requested-With(若前端设置了自定义 header)credentials: 'include',此项必须为 true,且 Access-Control-Allow-Origin 不能为 *
只要服务端 CORS 配置正确,JS 可照常使用标准方式请求 XML 资源:
fetch 获取 XML 并解析:fetch('https://api.example.com/data.xml')
.then(res => res.text())
.then(str => new DOMParser().parseFromString(str, 'text/xml'));
XMLHttpRequest:const xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.example.com/data.xml');
xhr.responseType = 'document'; // 自动解析为 XMLDocument
xhr.onload = () => console.log(xhr.response);
xhr.send();
如果请求仍失败,优先检查以下几点:
Access-Control-Allow-Origin 等字段file:// 协议打开 HTML,CORS 不适用(而是受限于文件协议本身),应启用本地服务(如 npx serve)在 Node.js + Express 中可使用 cors 中间件快速启用:
npm install cors
const cors = require('cors');
app.use(cors({
origin: 'https://your-app.com',
credentials: true
}));