質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.23%

ハイブリッドアプリにおけるサーバー連携

受付中

回答 1

投稿

  • 評価
  • クリップ 2
  • VIEW 2,089

1nakaji

score 181

現在、ハイブリッドアプリを開発しています。

ハイブリッドアプリはHTMLやJava Scriptなどを含めて、
すべてサーバーからダウンロードするようにしています。
(サーバーサイドはPHPで記述しています)

この場合、スマフォアプリのHTML側には、
サーバー連携部分はどのように書くのがいいのでしょうか。

・location.hrefでPHPにリダイレクトさせる

最初に思いついた方法はこれでした。

ただ、当然最初のページでPHPリダイレクトして、
あとはすべてWebアプリとしての動きになります。
アプリというよりは本当にWebアプリのようになります。

もちろんきちんと動作はしますし、
オフラインでは使えないアプリなのでいいのですが、
そもそもこれで審査等は問題なく通るのでしょうか。

・ajax通信

HTMLからajax通信させる方法も考えたのですが、
「クロスオリジン要求をブロックしました」
とセキュリティで読み込みが拒否されます。


どのような方法で解決するのがよいか、
アドバイス頂けますと幸いです。


よろしくお願いいたします。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

0

1nakajiさんが開発中のアプリで「どんな機能を実現したいか」によるのではないでしょうか?

大手銀行のアプリでも、ログイン後は文字通りWebアプリになっちゃうものもあります。提供したいサービスがそれで十分に提供出来ているなら、それで十分です。

でもせっかくネイティブアプリを開発しているのだし・・・とか、提供したいサービスの内容からするとWebアプリ的な挙動では十分なユーザーエクスペリエンスを提供出来ないというのであれば、Ajaxを使用すれば良いです。

クロスドメイン問題は回避可能です。但し、セキュリティ上の要件でわざわざ設けられた制限なので、それを回避するからには自己責任でセキュリティ対策を施す必要があります。

探せば情報はたくさん見つかりますので、手始めに下記ページ辺りをご参考になさってみてください。

    Ajaxのクロスドメイン制約とは?


《 2015年10月28日 22:05 追記 》
クロスドメイン制約を回避する方法は幾つもあり、それぞれに一長一短があるようです。下記ページが結構詳しいので、そちらを御覧ください。

  JSONP などクロス ドメイン (Cross-Domain) 問題の回避と諸注意

この中には以下のような説明がありました。
一方、ここで説明する JSONP を使った回避方法の最大の利点は、Old Browser でも使用できる という点です。このため、広く一般で使用されるようなサービス (例えば、Bing Map、Google Map など) で多く採用されています。ただし、この方法のデメリットもありますので注意してください。(後述しますが、JSONP は、厳格なセキュリティを要求しないような汎用のサービスに向いています。)

先の回答では、一例として「JSONP」を使用した回避方法について情報連携させて頂きましたが、自由度が高い分、セキュリティ面ではリスクも高くなるようです。

ですので、結局は提供するサービスの内容とセキュリティ要件から、最適な方法を選択するのが重要ということになると思います。(ここが一番大変なのだと思いますが)

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/10/28 15:42

    ご回答ありがとうございます。

    こちらの実現したい機能によりなくはないわけですね。

    >大手銀行のアプリでも、ログイン後は文字通りWebアプリになっちゃうものもあります。
    >提供したいサービスがそれで十分に提供出来ているなら、それで十分です。

    今回はログイン画面からWebアプリになるのですが、
    そういったアプリもあるなら問題なさそうですね。

    そうなるとトップページは単純に以下のタグだけになり、
    あとはWebアプリとしての動作になると思います。

    これで機能実現ができるのであれば、
    これでも問題はないということですよね。

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script>
    location.href = "http://example.com";
    </script>

    </head>
    <body>
    </body>
    </html>

    >クロスドメイン問題は回避可能です。但し、セキュリティ上の要件でわざわざ設けられた制限なので、
    >それを回避するからには自己責任でセキュリティ対策を施す必要があります。

    セキュリティ対策というのはCSRFインジェクションなどですよね。

    ひとつ追加で筆問があるのですが、
    例えば世の中には様々なAPIがあるかと思います。

    Google mapなど。

    そういうものはajax通信でいろいろなサイトで使用できますが、
    これらはセキュリティ対策をした上でクロスドメイン問題を回避して、
    使わせているということになるのでしょうか。

    キャンセル

  • 2015/10/28 21:56

    自分はセキュリティ問題については全くの素人なので、詳しくは回答できませんが…
    参考になるページがありましたので、回答欄に追記しておきますね。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.23%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる