[英]How use no-cors with fetch()
我有个问题。 我试着解释一下。
我的客户要求我构建一个 web 门户,用于在私有服务器上获取和修改数据,使用基本身份验证。
私有服务器返回一个 XML 文件。
我尝试使用 fetch() 获取数据,但出现 CORS 错误。 我知道那是什么意思,但我没有私人服务器上的手。
所以我想将我的 fetch() 用于:
mode : 'no-cors'
但如果我这样使用,我可以使用获取的数据。
我想我有两个主要的解决方案:
如果我无法添加 CORS 标头,我可能想要构建一个小型服务器端脚本,它可以代表我发出这些请求。
我的脚本现在可以调用我的脚本,而不是直接调用目标,它必须在服务器端为您执行请求。
但是,如果我没有在服务器上的手,我该怎么做呢?
如果有人有想法...
非常感谢...
- - 编辑 - - -
我的代码:
getListApps: async function () {
let url = `${SA_BASE_URL}/applications`;
// Set headers
let headers = new Headers();
headers.append('Authorization', 'Basic ' + btoa(SA_LOGIN + ":" + SA_PASSWORD));
try {
// GET request
const response = await fetch(url, {
method: 'GET',
headers: headers,
mode: 'no-cors',
credentials: 'include' })
if (response.status === 200) {
const data = await response.json();
this.listApp = data;
this.listApp.forEach(app => {
if (app.status === "DISCONNECTED") {
this.listDecApp.push(app);
}
});
this.nbr = this.listDecApp.length;
} else {
if (response.status === 400) this.errors = ['Invalid app_permissions value. (err.400)'];
if (response.status === 401) this.errors = ['Acces denied. (err.401)'];
}
} catch (error) {
console.log(error);
this.errors = ["Une erreur est survenue lors de la récupération des informations sur le serveur."]
}
},
如果您可以使用 no-cors,请将其设置在headers中,例如:
var opts = {
headers: {
'mode':'cors'
}
}
fetch(url, opts)
如果您不控制 API,您将无能为力。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.