2

問題は、フォーム POST が発生し、コントローラーがリダイレクトを行うときに、リダイレクトが Zuul の背後にあることを認識していないように見えることです。

形:

@RequestMapping(value = "/create-something", method = RequestMethod.GET)
public String getForm(Model model, @CookieValue(value = "XSRF-TOKEN", defaultValue = "none", required=true) String token) {

    model.addAttribute("title", "Create New Something");

    model.addAttribute("_csrf", token);

    return "views/create-something";

}

役職:

@RequestMapping(value = "/create-something", method = RequestMethod.POST)
public String postForm(Model model, @ModelAttribute Something something) {

    SomethingClient.createSomething(something);

    return "redirect:" + something.getName() + "/";

}

この設定により、リダイレクトはパブリック Zuul URL ではなく、UI サービスの内部 IP にアクセスしようとします。

4

1 に答える 1

1

さまざまなアプローチを試した後、最終的に直接 URL に落ち着きました。より良い解決策があるかどうかはわかりませんが、これは機能し、上記の問題を解決します。

新しい投稿:

@RequestMapping(value = "/create-something", method = RequestMethod.POST)
public String postForm(Model model, @ModelAttribute Something something) {

    SomethingClient.createSomething(something);

    return "redirect:http://domain.com/ui/" + something.getName() + "/";

}

別の考えはインターセプターです。これは、UI サービスの数が多いほど複雑さが増したように感じました。

于 2015-12-04T06:05:12.520 に答える