19807


monacaクラウドで試していて、なかなか解決しなくて困っております。  
やりたいことはシンプルで、サーバーでの処理結果をJSONで受け取りたいだけです。  
下記がコードの抜粋ですが、$http.get()で必ず失敗します。

[code]

    app.controller('appCtrl', function ($scope, $http) {
    　　・・・省略
    　　$scope.proc = function() {
    　　　　var url = 'https://(IPアドレス)/';
    　　　　$http.get(url)
    　　　　　　.success(function (data, status, headers, config) {
    　　　　　　　　// 成功
    　　　　　　　　console.log('成功：' + JSON.stringify(arguments));
    　　　　　　})
    　　　　　　.error(function (data, status, headers, config) {
    　　　　　　　　// 失敗
    　　　　　　　　console.log('失敗：' + JSON.stringify(arguments));
    　　　　　　});
    　　};
    　　・・・省略
    });
    
[/code]

console.log()の内容は以下です。

> >
> 失敗：{"0":null,"1":0,"3":{"method":"GET","transformRequest":[null],"transformResponse":[null],  
>
> "url":"[https://(IPアドレス)/](https://\(IP%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9\)/)","headers":{"Accept":"application/json,
> text/plain, _/_ "}}}」

何かHTTPヘッダを付加しないといけないでしょうか？

ちなみに、ブラウザ(safari)から同じURLで正常に受け取れるのは確認しました。  
WebサーバーはIIS8、SSLは自己証明書(IISマネージャで作成)です。


CC BY-SA 3.0
2015-12-08T06:10:26.067
19752
2015-12-09T09:47:49.860
2015-12-08T06:58:09.903
8532
10149
question
monaca angularjs
monacaでhttpサービス


コードのミスか分からないので適当にクロスドメインであることを悪者にしてみます。

１．WhiteListPluginが弾いている  
下記を追加して許可しましょう

[code]

        <meta http-equiv="Content-Security-Policy" content="default-src *; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'">
    
[/code]

２．サーバ側でクロスドメインの許可ヘッダを追加する  
接続先のソースが何か分かりませんが、`htaccess`とかで許可すると  
`Header append Access-Control-Allow-Origin: *`  
PHPなら(※他の出力より前に出力すること)  
`header('Access-Control-Allow-Origin: *');`  
３．Chromeアプリなど環境に依存してる場合  
上記１，２で大体解決するかと思いますが、  
データの通信をJSONPで行うことで解決するかもしれません。

* * *

**他には……？**  
サーバの処理が見えないのでGETリクエスト処理する段階でリクエストが空だとか  
GETリクエストを受信できていないだとか、あるかもしれません。  
サーバにデータが届いているか確認することが第一です。  
もし、届いているのであれば、処理はうまくいっているのか？  
返却値をサーバ内で出力するなどで確認できるかと思います。  
そこまで確認して受信で失敗しているのでは？ってなります。


CC BY-SA 3.0
2015-12-09T09:47:49.860
19807
2015-12-09T09:47:49.860
19752
answer