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

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

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

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

3回答

4792閲覧

Internet Explore だけAPI通信できる chrome 、Edge、Firefox は403のエラーがでる

eisaku123

総合スコア74

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2018/06/12 05:15

編集2018/06/12 06:35

いつもおせわになります。

表記の通り
Internet Explore だけAPI通信ができて chrome 、Edge、Firefox は403のエラーがででしまいます。

履歴の削除やキャッシュの削除をしたり
jQueryのバージョンを変えても変化がなかったです。

chromeにかんしては手当たりしだい設定を変えましたができませんでした。

なんでInternet Explore だけ通信できて他のブラウザは403がでてしまうのでしょうか?

サーバーサイドでなにかしら制限をかえているのでしょうか? Internet Exploreができてしまうところがふに落ちないです。

html

1<!DOCTYPE html> 2<html> 3<head> 4<meta charset="UTF-8"> 5<title>HTMLファイルからPOSTでJSONデータを送信する</title> 6<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 7 8<script type="text/javascript"> 9 $(function(){ 10 $("#response").html("Response Values"); 11 12 $("#button").click( function(){ 13 var url = $("#url_post").val(); 14 15 var JSONdata = { 16 "app_id" : "*****", 17 "registration_id" : "***********", 18 "bot_id" : "**********", 19 "app_kind" : "***********", 20 "notification" : "true" 21 22 }; 23 24 alert(JSON.stringify(JSONdata)); 25 26 $.ajax({ 27 url : url, 28 type : 'POST', 29 data : JSON.stringify(JSONdata), 30 contentType: 'application/JSON', 31 scriptCharset: 'utf-8', 32 33 34 success : function(data) { 35 36 // Success 37 alert("success"); 38 alert(JSON.stringify(data)); 39 $("#response").html(JSON.stringify(data)); 40 $("#response2").html(JSON.stringify(data.systemText.expression)); 41 var e = document.getElementById ('response3'); 42 e.value = data.systemText.expression; 43 44 45 }, 46 error : function(data) { 47 48 // Error 49 alert("error111"); 50 alert(JSON.stringify(data)); 51 $("#response").html(JSON.stringify(data)); 52 } 53 }); 54 }) 55 }) 56</script> 57 58</head> 59<body> 60 <h1>HTMLファイルからPOSTでJSONデータを送信する</h1> 61 <p>URL: <input type="text" id="url_post" name="url" size="100" value="https://******/users/**********"></p> 62 <p>value1: <input type="text" id="voiceText" size="30" value="init"></p> 63 <textarea id="response" cols=120 rows=10 disabled></textarea></br> 64 <textarea id="response2" cols=120 rows=10 disabled></textarea></br> 65 <textarea id="response3" cols=120 rows=10 disabled></textarea></br> 66 <p><button id="button" type="button">submit</button></p> 67 68</body> 69</html>

エラー内容は↓

Failed to load resource: the server responded with a status of 403 (Forbidden)

jQueryでエラーになっているところ↓

f.send(a.hasContent&&a.data||null)},abort:function(){b&&b()}}:void 0}),o.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return o.globalEval(a),a}}}),o.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&
・・・・・・・

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

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

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

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

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

yambejp

2018/06/12 05:26

詳細がなにもないので、そういうタイプのapiなのだろうとしか想像しようがないですね
guest

回答3

0

他の皆さんが仰るように、質問者さんに切り分けしてもらなければ、分かりないと思いますので、切り分け手段を提案します。

Fiddlerで通信内容を確認する

Fiddler を各ブラウザのProxyに設定し、通信内容を横取りして比較してください。
リクエストヘッダ、レスポンスヘッダの違いにヒントがあります。
https://www.telerik.com/fiddler

サーバの設定を確認する

リクエスト先は

https://******/users/**********

ですね。
ならば、https://******/ の設定を確認してください。

yambejp さんが指摘されているように、クロスドメイン通信なら、CORS上の設定がされているかも確認してください。
https://developer.mozilla.org/ja/docs/Web/HTTP/HTTP_access_control

ブラウザの設定を初期化する

通信上の問題でなければ、ブラウザの問題になります。
各ブラウザの設定を初期化し、現象に変わりがないか確認してください。

(IEが動作するのは、信頼済みサイトに登録している等、例外設定的な何かが絡んでいるのかもしれません。
最も、これは憶測に過ぎませんので、それにとらわれず、全ての原因を疑って下さい)

Re: eisaku123 さん

投稿2018/06/13 03:43

編集2018/06/13 03:53
think49

総合スコア18162

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

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

0

詳しくはわかりませんが

「https://****/users/********」宛にajaxで飛ばそうとしてますよね?
本来であればクロスオリジンの方でエラーになる気がしますが
IEで接続できているのであれば、UAを元にエラーを返していると考えるのが妥当です
検証方法としてはなんらかの偽装をして試してみるとかでしょうか

投稿2018/06/12 06:07

yambejp

総合スコア114769

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

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

yambejp

2018/06/13 11:11

いずれにしても認証をとおさないとつながらないAPIなんでしょう IEはなにかたまたまキャッシュしているとかじゃないですか?
guest

0

その API が何だか不明ですが仕様は調べましたか?

403 はサーバーによるアクセス拒否で、サーバーまでは要求は届いているのは間違いなさそうです。

なので、今提供されている情報だけで自分が想像できるのは、サーバーがブラウザの User-Agent を見て IE 以外を拒否しているのかもしれないということぐらいです。

投稿2018/06/12 05:32

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

eisaku123

2018/06/12 05:48

仕様はしっかり調べてませんが、たぶんUser-Agentにかんしてはのってないです。 これはブラウザーだと拒否られますので、curlならいけそうな感じでしょうか?
退会済みユーザー

退会済みユーザー

2018/06/12 06:11 編集

> 仕様はしっかり調べてませんが 掲示板の反対側にいて掲示板に書いてあること以外は知り得ない第三者は五里霧中状態です。なので質問者さんの方でしっかり調べてもらわないことには話が進められないと思うのですが。 > これはブラウザーだと拒否られますので、curlならいけそうな感じでしょうか? それも第三者が分かることではありません。User-Agent も自由に設定できるそうですから、ご自分で試してみてはいかがでしょう? あと、ajax を使って通信しているようですが、クロスドメインの問題とかは認識されてますよね?
eisaku123

2018/06/12 06:38

仕様には時限トークンがいると書いてあります。
退会済みユーザー

退会済みユーザー

2018/06/12 06:43

そう言われても「時限トークン」とは具体的に何かが分からない自分(多分他の第三者も)には何とも答えようがないです。 #それが必須なら、そもそもの IE なら OK というのも不可解な気がするのですが・・・
eisaku123

2018/06/12 06:47

時限トークン=時間制限がある鍵と思っていただければよいかと思います。これがないと認証されないと思われますが、、、IEだとなぜ、、、というところに陥ってしまいます。 IEは脆弱性の問題などでサーバー側では考慮してないのではないかと考えられます。
退会済みユーザー

退会済みユーザー

2018/06/12 06:50

そのあたりを全部質問者さんの方でしっかりと調べた上で質問してほしいとお願いしておるのですが。質問者さんの方でしか分からないことなのですから。
eisaku123

2018/06/12 06:53

すみません。IEが通って、やったー!と思ってて、、、、他のブラウザが通らないにことがこんなに深いとは思わなくて、、、すみません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問