必须搭建安全代理层以绕过cors并保护api key,前端调用代理接口,node.js环境可直连但需通过环境变量管理key。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在网页前端或Node.js环境里用JavaScript调用通义千问API,必须绕过浏览器直接请求DashScope服务时的CORS限制,同时确保API Key不暴露在客户端代码中——这是安全底线,硬编码Key会导致密钥泄露、账户被盗刷、产生不可控费用。
第一步:搭建安全代理层(必做)
直接在浏览器里用fetch调用https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions会触发跨域错误。你不能跳过这一步,也不能用“临时禁用CORS”这种开发模式应付上线环境。
创建一个轻量代理接口,比如用Cloudflare Workers、Vercel Edge Functions或本地Express服务。以Cloudflare Worker为例:
新建index.js,写入以下内容:
```js
export default {
async fetch(request, env) {
const url = new URL(request.url);
if (request.method === 'POST' && url.pathname === '/api/qwen') {
const body = await request.json();
const response = await fetch('https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${env.DASHSCOPE_API_KEY}`
},
body: JSON.stringify(body)
});
return new Response(response.body, {
status: response.status,
headers: { 'Content-Type': 'application/json' }
});
}
return new Response('Method not allowed', { status: 405 });
}
};
```
在Workers控制台设置环境变量DASHSCOPE_API_KEY,值为你从百炼平台获取的sk-xxxxxxxx。这一步做完,你的前端就只跟自己的域名通信,Key永远不落地到浏览器。
第二步:前端发起调用(浏览器环境)
在Vue/React项目或纯HTML页面中,使用fetch向你的代理地址发送请求:
```js
async function callQwen(prompt) {
const res = await fetch('/api/qwen', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
model: 'qwen-plus',
messages: [{ role: 'user', content: prompt }],
temperature: 0.7
})
});
const data = await res.json();
return data.choices?.[0]?.message?.content || '';
}
```
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
调用时传入字符串即可:callQwen("解释量子纠缠")。注意:不要在请求体里塞system角色——qwen-plus默认不支持system message,强行加会导致400错误。
【关键限制】qwen-plus模型在兼容模式下不接受system字段,若需设定角色,请改用qwen-max或qwen-turbo,并在messages数组首位插入{role: "system", content: "你是一名物理学家"}。
第三步:Node.js环境直连(无代理场景)
如果你在服务端(如Express、NestJS)运行,可跳过代理,直接用node-fetch或axios调用:
安装依赖:npm install node-fetch
代码示例:
```js
import fetch from 'node-fetch';
const API_KEY = process.env.DASHSCOPE_API_KEY;
const url = 'https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions';
export async function qwenChat(userInput) {
const res = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${API_KEY}`
},
body: JSON.stringify({
model: 'qwen-plus',
messages: [{ role: 'user', content: userInput }],
max_tokens: 512
})
});
return res.json();
}
```
运行前务必通过export DASHSCOPE_API_KEY=sk-xxx设置环境变量。Node.js里读取环境变量比前端安全得多,但依然禁止写死在代码里。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










