2017-04-13 17 views
2

AngularJS $ httpを使用してGoogle Contacts APIで投稿リクエストを行います。

私はこれを行うことを試みた:

var config = { 
 
    headers: { 
 
     // "Content-Type": "application/json", 
 
     "Authorization": "Bearer " + gapi.auth.getToken().access_token, 
 
     "GData-Version": "3.0" 
 
    } 
 
} 
 

 
var data = { 
 
    "test": "test" 
 
} 
 

 
$http.post('https://www.google.com/m8/feeds/contacts/default/full/', data, config);

をしかし、それは返すこの要求を

"のXMLHttpRequestはhttps://www.google.com/m8/feeds/contacts/default/full/をロードすることはできませんプリフライトの応答が無効なHTTPステータスコード405を持っています。"郵便配達員のようなRestClientで働いています(201が作成されます)。

誰かが私にこの方法がブラウザから許可されていない理由を説明できる場合。

+2

投稿要求ではない、$ http.get' ... – Ankh

+0

私の悪い、私は投稿を使っています^^ – Zooly

答えて

1

https://www.google.com/m8/feeds/contacts APIは、単にOPTIONSリクエストをサポートしていないと考えています。 405という応答は、エンドポイントがOPTIONSリクエストをサポートしていないことを本質的に示していますが、必ずしもPOSTをサポートしているわけではありません。

解決策は、Angularの$httpサービスではなく、Google独自のJavaScript API libraryを使用することです。

あなたのWebアプリケーションから、そのような人々、カレンダー、ドライブなどのGoogle APIと対話するためにJavaScriptクライアントライブラリを使用することができます。

GoogleのAPIライブラリがCORSリクエストをサポートする方法については、some documentationもあります。

あなたの人生を少し楽にするために、このライブラリの角度ラップバージョンがあるかもしれませんが、私は周りを掘っていません。

+0

私はあなたの助けを借りて、この方法をチェックします! 投稿要求のためにgapi.client.request()を呼び出すことはできますか? – Zooly

0

10.4.6 405 Method Not Allowed

リクエストラインで指定されたメソッドは、Request-URIによって識別されるリソースに対して許可されていません。レスポンスは、要求されたリソースに対して有効なメソッドのリストを含むAllowヘッダーを含まなければならない(MUST)。

サーバーサイドでGET/POST/PUT/OPTIONS ...のどちらの方法が期待されているかを確認し、通話に使用します。

+0

私はそれがサーバー側の問題だとは思いません。私の要求はRESTクライアント(郵便配達員など)から働いています – Zooly

+0

あなたが言ったように、それはサーバーの問題ではありません。したがって、あなたはPOSTを送信しており、サーバーはGET/POSTのようないくつかの他の方法を期待しています。 – user987339

+1

@HugoTor Postmanは飛行前のOPTIONSリクエストを送信する可能性は低いので、なぜ同じ問題に遭遇していないのですか?ただし、ブラウザは自動的にこの応答を送信します。 – Ankh

関連する問題