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

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

新規登録して質問してみよう
ただいま回答率
85.50%
TCP

TCP(Transmission Control Protocol)とは、トランスポート層のプロトコルで、コネクション型のデータサービスです。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Apache Tomcat

Apache TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

解決済

4回答

3306閲覧

Ajax通信とクロスドメインについて

a-takahashi

総合スコア48

TCP

TCP(Transmission Control Protocol)とは、トランスポート層のプロトコルで、コネクション型のデータサービスです。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Apache Tomcat

Apache TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

1クリップ

投稿2015/07/16 08:33

初歩的な質問で恥ずかしいのですが。。。

既に読み込んだページから、別ドメインに通信することができない、
というのはつまり、
既に読み込んだページから、別のIPアドレスに通信することができない、
ということと、同義なのでしょうか?

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

厳密に言えば、異なります。

ドメイン=IPアドレスで、1対1の関係なら、その認識で大丈夫ですが、
例えば www.google.co.jp なんかは、複数のIPアドレスで運用されています。

つまり、ドメイン:IPアドレスが1:複数となりますので、
もしもwww.google.co.jp内で同ドメインにAjax通信をした場合、
別のIPアドレスにリクエストが飛ぶ可能性がありますが、
通信自体は問題なくできます。
(実際にはキャッシュなどされ、ないかもしれません。)

このように、クロスドメインの制約は、別IPではなく別ドメインの場合のみです。
googleのような別のサーバ(IPアドレス)運用でも、
DNSラウンドロビンなどで同じドメインが割り当てられていた場合、
通信することができます。

しかし逆に、同じIPアドレスであっても、バーチャルホストなどで
1台のサーバに違うドメインが割り当てられている場合は、通信することができません。
この場合は、ドメイン:IPアドレスが複数:1です。

あくまで、ドメインの話です。
IPアドレスは無関係と考えた方がいいでしょう。

ちなみに余談ですが、クロスドメイン制約を回避する方法として、
JSONではなくJSONP方式でAjax通信するという方法があります。

これであれば、違うドメインでも通信することができます。

一般的なAPIであれば、callback=[関数名]という引数を渡せば、利用できます。

詳しくはこちらをどうぞ。

余談でした。

投稿2015/07/16 09:09

編集2015/07/16 09:11
moriyama

総合スコア259

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

既に解決済になっいて、かつ、質問の内容と直接関係なくて恐縮ですが・・

既に読み込んだページから、別ドメインに通信することができない、

というのは、ある意味誤りです(通信という言葉の定義によりますが・・)。

正確には、リクエストを送信することはできるがレスポンスに JavaScript からアクセスできない、です。
(リクエストを送ってみなければ Allow-*** などをサーバが返すかどうかわかりません)

プリフライトリクエストが送られるケースであれば、サーバ側で特別な対応をしていない限り実質リクエストすら送れないのと同じですけれども。

投稿2015/07/17 03:14

ngyuki

総合スコア4514

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

大変参考になりました。
お二方ともありがとうございました。

投稿2015/07/17 00:14

a-takahashi

総合スコア48

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

そのようです。
参考

投稿2015/07/16 08:39

icham

総合スコア559

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問