我正在尝试通过axios在Vue中发出CORS get
请求。到目前为止一切运作良好,但如果我需要通过基本身份验证进行身份验证,我无法让它工作。
继承我的代码
getData: function() {
let vm = this; // assign vue instance to vm
axios.get('url', {
withCredentials: true,
auth: {
username: 'name',
password: 'pass'
}
}).then(function(response) {
console.log(response)
}).catch(function(error) {
console.log(error)
})
}
即使我输入了凭据以及正确的网址,我总是获得401响应。它看起来像这样。
HTTP/1.1 401 Authorization Required
Date: Wed, 01 Feb 2017 16:23:31 GMT
WWW-Authenticate: Basic realm="'Realm'"
Content-Length: 499
Keep-Alive: timeout=15
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1
原始请求看起来像那样
OPTIONS 'url' HTTP/1.1
Host: 'host'
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Access-Control-Request-Method: GET
Origin: http://localhost:9000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.76
Safari/537.36
Access-Control-Request-Headers: authorization
Accept: */*
DNT: 1
Referer: http://localhost:9000/pages/blog_cc/blog_cc.html
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: de,en;q=0.8
我错过了什么?凭借Postman和完全相同的凭据,一切都像魅力一样。即使在Chrome中也是如此。
我看到这个问题已被问过几次,但其他线程上提出的所有答案都不适合我。例如,我无法从节点发出请求。
编辑:我也试过用vanilla JS发出请求,也无济于事。看来问题出在后端。不过,这是我的代码。
let xml = new XMLHttpRequest();
xml.open('GET', api, true);
xml.setRequestHeader('Authorization', 'Basic: ' + btoa(user + ':' + pass));
xml.send();
答案 0 :(得分:1)
所以我一直在寻找如何为此发帖的例子,但找不到好的帖子。得到它的工作,它看起来像:
const { MAILCHIMP_KEY } = process.env;
const url = "https://us{yourRegionNumber}.api.mailchimp.com/3.0/lists/{yourlistid}/members/";
const client = axios.create({
auth: {
username: "yourmailchimpusername", //This could be your email
password: MAILCHIMP_KEY
},
headers: {
"Content-Type": "application/json"
}
});
const mailChimpRes = await client.post(url, {
email_address: `${email}`,
status: "subscribed",
merge_fields: {
FNAME: `${firstName}`,
LNAME: `${lastName}`
}
});
答案 1 :(得分:0)
您可以尝试将withCredentials: true,
选项传递给Axios请求(如果它是跨站点请求)。
答案 2 :(得分:0)
根据他们的docs,mailchimp不支持客户端请求,因此您必须通过服务器端路由它:/
答案 3 :(得分:0)
我有相同的经验,我的解决方法是使用以下设置来处理与我们已设置的OAuth服务器的通信:
axios({
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
method: 'post',
url: REVOKE_URL,
auth: {
username: CLIENT_ID,
password: CLIENT_SECRET
},
data: {
datastuff: actualData
}
})
这在几天没有尝试使用axios.post后起作用。
Axios版本:0.18.0