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

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

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

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

JavaScript

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

jQuery

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

Ajax

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

Q&A

解決済

3回答

624閲覧

外部ドメインにjavaScriptでアクセスしてレスポンスコードを受け取る方法

sixth13

総合スコア33

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

JavaScript

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

jQuery

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

Ajax

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

0グッド

1クリップ

投稿2018/07/04 00:15

編集2018/07/04 08:53

aaa.comとbbb.comがあったとして
aaa.comのjavaScriptに何らかのコードを書いてでbbb.comにアクセスして
bbb.comの中の任意のページ(html)が無い時に404等の
レスポンスコードを受け取る事は可能でしょうか。

また可能な場合どのように書けばよろしいでしょうか。
ご教示いただければ幸いです。

追記:

aaa.comとbbb.comはドメイン・サーバーどちらも自分の管理下にある状態です。
下記で200のコードは取得できますが無いページ(404 not found)はクロスオリジンエラーが出てしまいます。

bbb.comの.htaccessに下記を追加

header append Access-Control-Allow-Origin:*

aaa.comの下記のjavaScriptを動かす

javaScript

1var root_path = location.pathname; 2var OTHER_SITE_DOMAIN = "https://bbb.com"; 3var otherSiteSameContentUrl = OTHER_SITE_DOMAIN + root_path; 4console.log(otherSiteSameContentUrl); 5 var xhr = new XMLHttpRequest(); 6 console.log('UNSENT', xhr.status); 7 8 xhr.open('GET', otherSiteSameContentUrl, true); 9 console.log('OPENED', xhr.status); 10 11 xhr.onprogress = function() { 12 console.log('LOADING', xhr.status); 13 }; 14 15 xhr.onload = function() { 16 console.log('DONE', xhr.status); 17 $('body').append('DONE: ' + xhr.status); 18 }; 19 20 xhr.send(null); 21 22 /** 23 * Outputs the following: 24 * 25 * UNSENT 0 26 * OPENED 0 27 * LOADING 200 28 * DONE 200 29 */ 30

無いページにアクセスした時に[xhr.status]に404が出るようにするにはどのようにすればよろしいでしょうか。

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

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

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

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

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

m.ts10806

2018/07/04 00:33

これだけでは意味が分かりません。リクエスト・レスポンスの具体例を出してください。タグにあるAjaxなどでの実現方法は調べて実際に試してみたのでしょうか。
sixth13

2018/07/04 00:38

リクエスト・レスポンスの具体例:ブラウザでアクセスしたようなリクエストでレスポンスは404のようなコードを受け取るなど任意のhtmlファイルの有無を確認したいです。
m.ts10806

2018/07/04 01:10

うーん、具体例・・・とはちょっと言えませんね。実際に何かしら試してみたコードがあった上であれば良いのですが。
guest

回答3

0

一般には、ブラウザ内のJavaScriptだけで行うことはできません

「送信するサーバがCORSで認可したもの」と「JSONP」を除けば、他のサーバから取ってきたデータにJavaScriptからアクセスすることができないのです。

投稿2018/07/04 00:46

maisumakun

総合スコア145183

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

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

sixth13

2018/07/04 00:49

ご回答誠にありがとうございます。 外部ドメインなのでCORSで引っかかる為、JSONP以外へのアクセスは無理でしょうか。。
maisumakun

2018/07/04 00:53

中継サーバを用意すれば可能ですが、それはできないでしょうか。
sixth13

2018/07/04 00:58

Proxyについて少しググってみたのですがハードルが高そうに思えます。 実際にjavascriptやhtmlしか触ったことのないような者にそれは実現可能なのでしょうか。
sixth13

2018/07/04 01:02

説明不足でしたので追記しました。 aaa.comとbbb.comはドメイン・サーバーどちらも自分の管理下にある状態です。 Access-Control-Allow-Originをどこかに設置すると可能でしょうか。
og24715

2018/07/04 01:17

aaa.com から bbb.com へ fetch してリソースが存在しなければ bbb.com が 404 を正しく返すようになっている前提で、実際に fetch すると bbb.com が cors 制約により 401 を返すのであれば、bbb.com のレスポンスに正しくAccess-Control-Allow- 系のヘッダーが適用されていれば可能な気がします。https://developer.mozilla.org/ja/docs/Web/HTTP/HTTP_access_control
maisumakun

2018/07/04 01:17

そうですね、bbb.comでAccess-Control-Allow-Originを投げれば、できるとは思います。 もっとも、両方が自分の管轄なのなら、ブラウザJavaScriptでアクセスして確認させるより、サーバ内部的に連携させる仕組みを作ったほうがいいような気もします。
sixth13

2018/07/04 01:39

@og24715 ご回答誠にありがとうございます。 貼り付けていただいたリンクをよく見てみます
sixth13

2018/07/04 01:42

・サーバ内部的に連携させる仕組み こちらはさくらサーバーなどの共用サーバー同士も可能なものでしょうか。 ・bbb.comでAccess-Control-Allow-Originを投げれば bbb.comにAccess-Control-Allow-Originを設定すれば質問した中のコードで実現可能でしょうか。
sixth13

2018/07/04 08:28

.htaccessに[Header append Access-Control-Allow-Origin:*]を設置することでXMLHttpRequestのリクエスト(statusで200)を取得することができましたが404のページはクロスオリジンエラーが出てしまいます。
guest

0

既に議論は進んでいるようにも思いますが、念のため。

[this.status]を取得したいです。

下記で取れるか確認してみてください。

投稿2018/07/04 02:12

m.ts10806

総合スコア80850

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

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

sixth13

2018/07/04 08:02

.htaccessに[Header append Access-Control-Allow-Origin:*]を設置することでXMLHttpRequestのリクエスト(statusで200)を取得することができましたが404のページはクロスオリジンエラーが出てしまいます。
m.ts10806

2018/07/04 08:03

Chromeでローカルファイルfile://で実行されてませんか?
sixth13

2018/07/04 08:24

いえ、両方ともサブドメインを作ってひとつに.htaccessに[Header append Access-Control-Allow-Origin:*]を設置しております。
sixth13

2018/07/04 08:24

両方サーバーにアップしております。
guest

0

自己解決

オリジナルの404を作ってそこにリダイレクトさせることで無事に404レスポンスコードを取得することができました!

投稿2018/08/25 08:36

sixth13

総合スコア33

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問