teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2020/01/08 04:10

投稿

退会済みユーザー
answer CHANGED
@@ -6,4 +6,27 @@
6
6
 
7
7
  (3) ブラウザから ajax でアクセスするのではなく、サーバー側の web アプリでアクセスして (例えば C# なら HttpWebRequest を使うとかして) サーバー側でデータを入手してクライアント(ブラウザ)に渡す。
8
8
 
9
- ・・・ぐらいです。上記に興味があって、不明点の質問があれば聞いてください。
9
+ ・・・ぐらいです。上記に興味があって、不明点の質問があれば聞いてください。
10
+
11
+ **【追記】**
12
+
13
+ gentamura さんのレスを見て気が付いたのですが、[https://kinocolog.com/jquery_ajax/](https://kinocolog.com/jquery_ajax/) に書いてあったことをそのまま自分の環境で試してみたいということだったようですね。
14
+
15
+ 記事の[ajax通信で取得する]ボタンをクリックすると問題なく通信に成功して情報を取得できるのですが、それは下の画像の赤枠で囲った部分がキモです。
16
+
17
+ ![イメージ説明](edfe4223d5081c55a5431360fa54f2ee.jpeg)
18
+
19
+ ボタンをクリックすると記事に書いてある通り jQuery ajax を使って要求が送信しようとします。以下の画像がボタンクリックでのブラウザ ⇔ サーバー間の要求。応答をキャプチャしたものです。
20
+
21
+ ![イメージ説明](8bfd3962facca10c98ce1ddb1965ba24.jpeg)
22
+
23
+ 赤枠で囲った部分は jQuery ajax で要求した URL ですが同一オリジンポリシー(詳しくは下記 URL 参照)に違反してないので通信に成功しています。
24
+
25
+ 同一オリジンポリシー
26
+ [https://developer.mozilla.org/ja/docs/Web/Security/Same-origin_policy](https://developer.mozilla.org/ja/docs/Web/Security/Same-origin_policy)
27
+
28
+ 同一オリジンポリシーを満足しない場合、HTML 5 の仕様 Cross-Origin Resource Sharing (CORS) を実装している新しいブラウザであれば、ブラウザは CORS のプロトコルに従って自動的に対処しようとします。
29
+
30
+ しかしながら、サーバー側で CORS に必要な応答ヘッダ返せるような対応がされてないと通信に失敗します。質問に書いてあったエラーメッセージ "No 'Access-Control-Allow-Origin' header is present on the requested resource." はそのことを言っています。
31
+
32
+ という訳で、参考にしている記事に書いてあったことをそのまま自分の環境で試してみたいということであれば、試験用に開発環境にサーバーを立てるなどの方法で同一オリジンポリシーを守れるように設定するということになります。