我还应该试试什么?
我目前正在axios中向DeepL API发送一个请求,但由于CORS问题,我得到了一个403个响应。
并尝试使用querystring设置选项,如这里所示,但它没有工作。https://github.com/funkyremi/deepl/blob/master/index.ts还使用上述URL处的库返回403。
此外,在DeepL的帐户设置中没有原始设置。
我尝试使用‘Content’:‘application/x form-urlencoded’来表示axios头:{},我还尝试为params:{}设置选项,而不使用querystring,但它们没有工作。
import axios from 'axios'
import querystring from 'querystring';
export const translateDeepL = async() => {
const options = {
"auth_key": process.env.DEEPL_AUTH_KEY,
"text": 'everyday is birthday.',
"target_lang": 'JA',
};
const url = "https://api-free.deepl.com/v2/translate";
const data = await axios.post(url, querystring.stringify(options)).then(r => r);
console.log(data);
}VM3451:1 POST https://api-free.deepl.com/v2/translate 403请求使用带有ngrok的https也不起作用。
我也尝试了"https://api-free.deepl.com/v2/usage“的GET方法,但是得到了相同的结果。
因为我使用的是免费计划,所以它肯定是api-fre.depl.com。
顺便说一下,上面的代码是作为React中的一个组件执行的。
发布于 2022-09-14 15:54:58
我遇到了同样的问题,却找不到答案。这个API似乎不想通过浏览器和我交谈。
我的“解决方案”是在节点中设置一个API代理。
它工作得很好,从后端+现在我可以添加一些速率限制等。
编码园上的C.J可以比我任何时候都更好地解释这个问题。
发布于 2022-09-28 17:15:11
DeepL API不支持直接从基于浏览器的应用程序中使用。API密钥也不应该公开共享,应该始终保密。
最好的方法是为API调用使用后端代理。
发布于 2022-02-15 12:31:12
您可能因为从http (您的本地主机)向https发送请求而被阻止,请尝试使用代理axios配置,如
const response = await axios
.get("https://api-free.deepl.com/v2/translate", {
params: {
auth_key: x,
text: y,
target_lang: z
},
proxy: {
host: "localhost",
port: 8080
}
});返回响应;};
https://stackoverflow.com/questions/69217582
复制相似问题