AngularJSからのREST APIの呼び出しについて

お世話になります。
最近、知人に教えられてkintoneをお試し登録して触り始めました。
外部からのREST APIの呼び出しでつまづいてしまったので質問させてください。
localで動作中のAngularJSのアプリケーションからkintoneのREST APIを呼び出すと、以下のようなエラーではじかれてしまいます。
(HTTP OPTIONSで拒否されてHTTP GETまで進まない)何が原因なのでしょうか?

★アプリケーション(API呼び出し部分)
$http({
method: ‘GET’
, url: ‘https://xxxxxxx.cybozu.com/k/v1/apps.json
, headers: {
‘Authorization’: ‘Basic ************************',
‘X-Cybozu-Authorization’: ’
************************’,
}
}).success((data: any) => {
console.log(angular.toJson(data));
}).error((data: any) => {
console.log(angular.toJson(data));
});

★IEでの実行結果(コンソール出力)
SEC7118: https://xxxxxx.cybozu.com/k/v1/apps.json の XMLHttpRequest には Cross Origin Resource Sharing (CORS) が必要です。
ファイル: index.html
SEC7119: https://xxxxxx.cybozu.com/k/v1/apps.json の XMLHttpRequest には CORS プレフライトが必要です。
ファイル: index.html
SEC7120: 元の http://localhost:NNNNN が Access-Control-Allow-Origin ヘッダーに見つかりません。
ファイル: index.html
SCRIPT7002: XMLHttpRequest: ネットワーク エラー 0x80070005, アクセスが拒否されました。

★要求ヘッダ
キー 値
要求 OPTIONS /k/v1/apps.json HTTP/1.1
Accept /
Origin http://localhost:NNNNNN
Access-Control-Request-Method GET
Access-Control-Request-Headers authorization, x-cybozu-authorization, accept
Accept-Encoding gzip, deflate
User-Agent Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko
Host xxxxxx.cybozu.com
Content-Length 0
DNT 1
Connection Keep-Alive
Cache-Control no-cache

★応答ヘッダ
キー 値
応答 HTTP/1.1 200 OK
Server nginx
Date Sat, 28 Feb 2015 13:15:59 GMT
Content-Type text/html; charset=ISO-8859-1
Content-Length 1
Connection keep-alive
Cache-Control no-cache, no-store, must-revalidate
Set-Cookie JSESSIONID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;Path=/;Secure;HttpOnly
Expires Thu, 01 Jan 1970 00:00:00 GMT
X-Frame-Options SAMEORIGIN
Strict-Transport-Security max-age=315360000; includeSubDomains; preload;
X-UA-Compatible IE=Edge
X-Content-Type-Options nosniff
Set-Cookie __ctc=xxxxxxxxxxxxxxxxx; expires=Tue, 25-Feb-25 13:15:59 GMT; domain=cybozu.com; path=/

K.AKAOさん、こんばんは。

Angular JSからkintone REST APIをコールしたことはないのですが、エラーとこちらと照らし合わせても、単純にクロスドメイン通信しようとしていることが原因ではないでしょうか?

Ryu Yamashitaさんこんにちは、夜中にもかかわらずお返事ありがとうございます。

外部アプリケーション側からkintoneに働きかけて連携させる方法を試していたのでおっしゃるとおりクロスドメインです。
(REST APIなので外部ページから利用できると思ってました)

外部のページから投げようとしてるGETリクエストをGooglePOSTMANで投げてみたところ期待通りのレスポンスが取得できたのですが、作成したページから投げると、OPTIONS(プリフライト)が投げられ、ここで拒否されるのでGETが投げられませんでした。

https://developer.mozilla.org/ja/docs/HTTP_access_control を見たところ、X-xxxのようなヘッダがついたリクエストの場合、先行してプリフライトを投げるのがブラウザ(CORS)の仕様で、リクエストを投げたページの生成元をAPI側が許可していないと今回のようなエラーになるようです。

コマンドラインツールやicoxfog417さんのkintoneDotNETがあることがわかりましたので、外部アプリと連携するときは、ブラウザからではなくサーバー経由でおこなうことを考えます。

コマンドラインツールやicoxfog417さんのkintoneDotNETがあることがわかりましたので、外部アプリと連携するときは、ブラウザからではなくサーバー経由でおこなうことを考えます。

そうですね。バックエンド系のラッパー的なものは、現状サードパーティ含めて、JavaGo.NETRubyコマンドラインツールといったものがありますので、ご利用頂ければと思います。