2017-02-01 16 views
2

私はCORS getリクエストをVueでAxios経由で発行しようとしています。これまでのところすべてうまくいきますが、基本認証を使って認証する必要がある場合は、動作させることができません。Axios:Basic Authを使用してAPIを呼び出すことができません

HERESに私のコード

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) 
    }) 
} 

は私が正しく資格情報だけでなく、URLを入力するにもかかわらず、私はいつも 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 

のように見えますか?郵便配達員と全く同じ資格情報では、すべてが魅力のように機能します。 Chromeでも直接。

私は、この質問が既に何度か聞かれていたのを見ましたが、他のスレッドのすべての回答は私の解決策ではありません。たとえば、ノードから要求を発行することはできません。

編集:バニラJSでリクエストしてみましたが、無駄にしました。問題はバックエンドにあるようだ。それにもかかわらず、私のコードです。

let xml = new XMLHttpRequest(); 
xml.open('GET', api, true); 
xml.setRequestHeader('Authorization', 'Basic: ' + btoa(user + ':' + pass)); 
xml.send(); 

答えて

0

それは、クロスサイトリクエストだ場合は、Axios要求にwithCredentials: true,オプションを渡してみてください。あなたは、サーバー側経由ルートにそれを持っているので、

+0

それは実際にCORS要求です、ありがとう、私は完全にそれを言及して忘れてしまった!しかし、 'withCredentials:true'を指定しても、エラーはそのままです。 –

+0

OPTIONS要求が失敗するか、またはGETでフォローが要求されますか? – theleebriggs

+0

私は実際にはわかりません。これはRESTとの緊密な協力のためです。しかし、私のコンソールでは、まず 'OPTIONS 'url' 401(Authorization Required)'が表示され、 'XMLHttpRequestは 'url'をロードできません。プリフライト要求への応答がアクセス制御チェックを通過しない:要求されたリソースに「アクセス制御許可」がない。したがって、 'http:// localhost:9000'はアクセスが許可されていません。応答にはHTTPステータスコード401があります。 Access Control-Allow-Originは "*"に設定する必要があるため、2番目のメッセージは奇妙です。どうすればこれをさらに調査できますか? –

0

そのdocsによると、mailchimpは、クライアント側の要求をサポートしていません:/

0

だから私はこのためにポストを行う方法の例を探してcouldnました良いものを見つけることはできません。それは働いていて、それはのように見えます:

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}` 
    } 
}); 
関連する問題