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

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

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

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Tomcat

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

Apache Tomcat

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

Q&A

解決済

1回答

856閲覧

HttpServletRequest.getServletPath()で取得したサーブレットパスのスラッシュが1つ削除される

ntsuji

総合スコア6

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Tomcat

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

Apache Tomcat

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

0グッド

0クリップ

投稿2020/06/03 08:55

前提・実現したいこと

WEBサーバのミドルウェアにapacheの2.4
APサーバのミドルウェアにTomcatの8.5を使用しているWEBサイトで
リクエストURLに「//」(スラッシュが2つ連続)が含まれていると、
HttpServletRequest.getServletPath()で取得したサーブレットパスでは
「//」が「/」になってしまいます。
これを回避する方法はありませんでしょうか。

試したこと

HttpServletRequest.getRequestURI()で取得してみたが、同様に
「//」が「/」となった。

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

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

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

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

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

y_waiwai

2020/06/03 09:00

実際にどういう結果が出てくるんでしょうか。
guest

回答1

0

ベストアンサー

URLの(言うなれば)規定であるRFC3986に記載がありますが、URL中のPATHの記述において、連続するスラッシュ(/)2つを記述することは、許されないようです。

RFC3986 Uniform Resource Identifier (URI): 一般的構文 - 日本語訳の複製

3.3 パス
URI が authority 要素を含まない場合、path はスラッシュ二文字 ("//") を持って始める事はできない。

ここでいうauthority要素とは、簡単には例えばhttpスキームの後の部分、http://example.com:80/ のようなところ、です。

ですので、恐らくですがapache2あるいはtomcatのURLのパーズ部分で、気を利かせて(?)無用な/を除去しているのだと思われます。ご質問としては「回避する方法は?」ですが、その記載方法自体が不正なため、それを前提とした処理はできない、つまり回避できないと考えられます。

投稿2020/06/04 06:00

dodox86

総合スコア9183

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

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

ntsuji

2021/01/21 08:36

回避できない旨、了解致しました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問