umi 框架使用了 umi-request 库来发起 HTTP 请求,该库内置了跨域请求的支持。在 umi 中,你可以通过配置 `proxy` 来实现跨域请求。 在项目的根目录下,可以创建一个名为 `config/config.js` 的文件,并在其中添加以下内容:
export default {
proxy: {
'/api': {
target: 'http://example.com',
changeOrigin: true,
},
},
};
这个配置将会把所有以 `/api` 开头的请求转发到 `http://example.com` 主机上。`changeOrigin` 选项表示是否改变请求的源地址,以便服务器收到的请求头中的 `Host` 字段正确。如果你的后端服务器支持 CORS,可以将 `changeOrigin` 设置为 `false`。 在组件中使用 `umi-request` 发起跨域请求时,只需要将请求的地址设置为相对于代理地址的路径即可。例如:
import { request } from 'umi';
request('/api/users').then((response) => {
console.log(response);
});
在这个示例中,`/api/users` 会被转发到 `http://example.com/api/users`。 需要注意的是,跨域请求可能会受到浏览器的限制,例如跨域请求需要服务器设置 CORS 头部,否则可能会被浏览器拦截。另外,如果你需要在 umi 中使用 WebSocket 进行跨域通信,可以使用 `umi-plugin-crossorigin` 插件来解决。