1

AngularJS 1.4 と Spring 4 RestController を使用しています。開発マシンで GET リクエストを行うと、すべて正常に動作します。しかし、まったく同じ war ファイルをテスト サーバーにデプロイすると、まったく同じブラウザーからのまったく同じ要求が HTTP 406 Not Acceptable を返します。

2 つの環境の唯一の違いは、開発マシンでは埋め込み Tomcat 8 を使用しているのに対し、テスト サーバー アプリでは Tomcat 7 にデプロイされていることです。

私のリクエストは、電子メール アドレスを含む単一のパス変数で構成されています。

ローカル リクエスト: ここに画像の説明を入力

テスト サーバー リクエスト: ここに画像の説明を入力

リクエストを行う angularjs コード:

utilService.emailD = function(email) {
        return $http({
            method : 'GET',
            url : 'util/emailD/' + encodeURIComponent(email)
        }).then(
            function successCallback(response) {
                return response.data;
            },
            function errorCallback(response) {
                return {
                    error : true
                };
            });
    }

リクエストを受け付けるスプリングコントローラー

@RequestMapping(value = "/emailD/{email:.+}",
        method = RequestMethod.GET,
        produces = MediaType.TEXT_PLAIN_VALUE)
public ResponseEntity<String> emailD(@Email @Valid @PathVariable(value = "email") String email) {       
    try {
        log.debug("request emailD, email: {}", email);

        //omitted irrelevant code

        return new ResponseEntity<String>(someString, HttpStatus.OK);
    } catch (IllegalArgumentException iae) {
        return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
    }
}

そのような動作を引き起こす可能性があると考えられる理由はありますか?

4

1 に答える 1

1

問題自体 (および複数の有効な解決策) は、次のとおりです。

spring-json-request-getting-406-not-acceptable

あなたの場合、ローカルのTomcatには必要なライブラリがクラスパスにありますが、リモートのTomcatにはありません。アプリケーションはこれらを必要とするため、最適な解決策は Maven を介して依存関係として宣言することです。別のオプションは、jackson ライブラリを Tomcat のlibフォルダーに追加することです。

于 2015-12-17T20:58:09.190 に答える