我有一个问题。我试着解释一下。
我的客户要求我建立一个门户网站,用于在私人服务器上获取和修改数据,并使用基本身份验证。
私有服务器返回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,你就无能为力。