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

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

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

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

Tomcat

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

Q&A

解決済

1回答

582閲覧

javascriptのcontent-typeがどのように設定されているのかがわからない

takikvo

総合スコア1

JavaScript

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

Tomcat

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

0グッド

2クリップ

投稿2024/06/06 06:25

GoogleChromeにて、jsに設定されているcontent-typeを開発者ツールからヘッダー→レスポンスヘッダーから確認しているのですが、application/javascriptだったり、text/javascriptだったり、統一されていない状況です。

その為、content-typeがどのように設定されているのかご教授頂きたいです。

web.xml上でjsのmime-typeはapplication/javascriptで定義しておりますが、画面から確認するとtext/javascriptになっていたり、jsの呼び出し元であるjspではcontent-typeをtext/javascriptでjsの実行をしていますが、application/javascriptとなっていたり、どのような動きでcontent-typeを設定しているのかが不明です。

試した事としてはキャッシュクリアくらいしかありませんが、それでもcontent-typeが統一されませんでした。

環境の情報としては下記となります。
ブラウザ:GoogleChrome 125.0.6422.142
サーブレット:3.1
ライブラリ:jquery
Webサーブレット:tomcat 9.0.82

当方環境周りの知識が足りず、その他解決の為に必要な情報等あればお手数お掛けしますがご連絡お願い致します。

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

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

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

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

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

yambejp

2024/06/06 09:46

content-typeの指定の仕方がわからないという質問でしょうか?
退会済みユーザー

退会済みユーザー

2024/06/07 17:25 編集

何の話をしているのかイマイチ分かりませんが、tomcat 9.0.82のデフォルトは https://github.com/apache/tomcat/blob/9.0.82/conf/web.xml#L2127 にあるとおり text/javascript です。この設定がデフォルトのサーブレットで使用され、拡張子jsのContent-Typeが決められているはずです。 あなたの環境の知識はあなたにしかないので、あなたが書かない限り、これ以上は誰も何も言えません。 「必要な情報等あれば」 とかではなく、このサイトに記載できる最大量まででいいので、はじめから寸分たがわぬ環境を誰もが構築できるよう全て余さず説明してください。●●●●
dodox86

2024/06/06 11:35

その、おかしいと思っているjsのファイルは、tomcatの管轄外のロケーションを参照していたりしませんか。別のサイトのWEBサーバーを経由しているとか。Content-Typeを設定し得るのはJavaサーブレット/JSPのようなWEBアプリか、tomcatのようなアプリケーションサーバーか、apache, nginxのようなWEBサーバーです。
退会済みユーザー

退会済みユーザー

2024/06/06 13:13

一応tomcat 9.0.82をdocker上で走らせ、配布されてるexamplesアプリを配備してその中にjsを入れwgetさせるスクリプトを書いてみました。 $ cat hoge.sh docker run -d --rm --name tomcat tomcat:9.0.82 docker exec -i tomcat bash <<EOF cd /usr/local/tomcat/webapps ln -s ../webapps.dist/examples examples cat >examples/index.js <<EOF2 console.log('hoge') EOF2 wget --retry-connrefused -d -O - 'http://localhost:8080/examples/index.js' EOF docker stop tomcat $ sh hoge.sh 634690e7ae55f2b70d6d1026b9ebecfca95fd7f2f3dc35a9629e1eb1ac019fc7 Setting --output-document (outputdocument) to - DEBUG output created by Wget 1.21.2 on linux-gnu. Reading HSTS entries from /root/.wget-hsts URI encoding = ‘UTF-8’ --2024-06-06 13:08:51-- http://localhost:8080/examples/index.js Resolving localhost (localhost)... ::1, 127.0.0.1 Caching localhost => ::1 127.0.0.1 Connecting to localhost (localhost)|::1|:8080... Closed fd 3 failed: Connection refused. Connecting to localhost (localhost)|127.0.0.1|:8080... Closed fd 3 failed: Connection refused. Releasing 0x00005ee334959070 (new refcount 1). Retrying. --2024-06-06 13:08:52-- (try: 2) http://localhost:8080/examples/index.js Found localhost in host_name_addresses_map (0x5ee334959070) Connecting to localhost (localhost)|::1|:8080... Closed fd 3 failed: Connection refused. Connecting to localhost (localhost)|127.0.0.1|:8080... Closed fd 3 failed: Connection refused. Releasing 0x00005ee334959070 (new refcount 1). Retrying. --2024-06-06 13:08:55-- (try: 3) http://localhost:8080/examples/index.js Found localhost in host_name_addresses_map (0x5ee334959070) Connecting to localhost (localhost)|::1|:8080... connected. Created socket 3. Releasing 0x00005ee334959070 (new refcount 1). ---request begin--- GET /examples/index.js HTTP/1.1 Host: localhost:8080 User-Agent: Wget/1.21.2 Accept: */* Accept-Encoding: identity Connection: Keep-Alive ---request end--- HTTP request sent, awaiting response... ---response begin--- HTTP/1.1 200 X-Frame-Options: DENY X-Content-Type-Options: nosniff Accept-Ranges: bytes ETag: W/"20-1717679331982" Last-Modified: Thu, 06 Jun 2024 13:08:51 GMT Content-Type: text/javascript Content-Length: 20 Date: Thu, 06 Jun 2024 13:08:55 GMT Keep-Alive: timeout=20 Connection: keep-alive ---response end--- console.log('hoge') 200 Registered socket 3 for persistent reuse. Length: 20 [text/javascript] Saving to: ‘STDOUT’ 0K 100% 2.49M=0s 2024-06-06 13:08:55 (2.49 MB/s) - written to stdout [20/20] tomcat $
退会済みユーザー

退会済みユーザー

2024/06/06 13:33

さらに一応の補足です。 dockerでportをpulishする場合は、アプリ側のMETA-INF/context.xmlの <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> をコメントアウトしないとホスト外だと言われて弾かれます。
dodox86

2024/06/10 03:10

@質問者 takikvoさん (もう既に放置された質問なのかもしれませんが) これまで回答や複数のコメントをいただいているのですから、何らかの応対をしましょう。 質問の記載内容からすると、意訳として「JavaScriptをコンテントボディに含むHTTPレスポンスでは"Content-Type:" フィールドは誰がセットしているのか」とのようなかんじの疑問に私は捉えましたが、ひたすら無言では話が進みません。 ご自身の中で既に解決できたのであれば、自己回答で質問を閉じましょう。 [質問をした後に自己解決してしまった] https://teratail.com/help#resolve-myself
takikvo

2024/06/12 03:08

返信が遅れてしまいまして大変申し訳御座いません。 またたくさんのご回答頂き、有難う御座いました。 当件について、解決出来ましたのでクローズさせて頂きます。 またトンチンカンな質問をしまして大変申し訳御座いませんでした…よく調べたら分かる内容でした。
guest

回答1

0

ベストアンサー

現時点ではtext/javascriptを使えばいい。
仕様上はこれだけが正しい。

ただし現実のブラウザでは互換を切れないのでapplication/javascriptや他の亜種でも使える。
非推奨だけど使える扱い。
application/javascript使ってるものは最新の仕様に追従できてない。

こうなった歴史は検索すればいくらでも見つかる。

投稿2024/06/06 07:07

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

takikvo

2024/06/12 03:02

皆様方、ご回答頂きまして有難う御座いました。 また返信が遅れてしまったこと、大変申し訳御座いませんでした。 当件について、皆様方のおかげで解決致しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問