4

Angular アプリ内で sqwiggle API にアクセスしようとしており、Postmanを使用してテストしていました。すべてうまくいくようです。Basic Auth ヘッダーを定義し、messages エンドポイントに対して GET 要求を実行すると、適切な応答が得られます。これらは (Postman からの) 要求ヘッダーです。

Request URL:https://api.sqwiggle.com/messages
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8,nl;q=0.6
Authorization:Basic [secret]
Cache-Control:no-cache
Connection:keep-alive
Host:api.sqwiggle.com
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.70 Safari/537.36

私のAngularJSアプリで、同じことをしたい:

$http.get('https://api.sqwiggle.com/messages', {
    headers: {
        Authorization: 'Basic [secret]'
    }
}).success(function(e) {
    alert(e);
});

ただし、これにより、次の要求ヘッダーが生成されます。

Request URL:https://api.sqwiggle.com/messages
Request Method:OPTIONS
Status Code:404 Not Found
Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8,nl;q=0.6
Access-Control-Request-Headers:accept, authorization
Access-Control-Request-Method:GET
Connection:keep-alive
Host:api.sqwiggle.com
Origin:http://localhost:8888
Referer:http://localhost:8888/
User-Agent:Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53

Postman が JS を使用して API からデータを取得するという事実を考えると、AngularJS でも可能であるはずですが、ここで何か不足していますか? Angular が OPTIONS リクエストで GET を変換するのはなぜですか? Authorization ヘッダーを追加しないのはなぜですか?

ご協力いただきありがとうございます

4

1 に答える 1

1

使用する代わりに、このようなものを試してください$http.get

$http({
    method: "get",
    url: "https://api.sqwiggle.com/messages",
    headers: {
        'Authorization' : 'Basic secret'
    }
}).success(function(data) {
    console.log(data);
});
于 2015-03-18T15:06:10.043 に答える