当前位置: 首页 > 知识库问答 >
问题:

Zuul返回HTTP状态200而不是302

狄阳华
2023-03-14

我有一个名为Backend(端口:9090)的服务,位于Zuul(端口:8080)后面。

浏览器在Zuul上调用GET方法,执行重定向。

示例调用:http://localhost:8080/testredirect

结果:

  • 浏览器收到Http状态=200
  • 浏览器URL:http://localhost:8080/testredirect
  • 浏览器显示:Hello world

预期结果:

  • 浏览器应接收Http status=302并更改URL,结果为:
  • 浏览器URL:http://localhost:8080/hello
  • 浏览器显示:“你好,世界”

Zuul似乎返回了200,隐藏了重定向,因为它是一个代理服务器。

当URL在服务器端的GET方法中定义时,如何在浏览器中实现302重定向?

以下是后端服务:

@SpringBootApplication
public class BackendApplication {

    @RestController
    @RequestMapping
    public class Backend {
        @GetMapping(value = "/hello")
        public String sayHello() {
            return "Hello world";
        }

        @GetMapping(value = "/testredirect")
        public RedirectView sayRandom() {
            return new RedirectView("/hello");
        }

       public static void main(String[] args) {
          SpringApplication.run(BackendApplication.class, args);
       }
    }
}

下面是Zuul的配置:

server:
  port: 8080
zuul:
  routes:
    core:
      sensitive-headers:
      path: /core/**
      url: http://localhost:9090/

注:春云-

共有2个答案

拓拔弘化
2023-03-14

您可以在Spring上下文中定义bean。

@Bean 
public ApacheHttpClientFactory apacheHttpClientFactory() {
     return new ApacheHttpClientFactory() {
         @Override 
         public HttpClientBuilder createBuilder() {
             return HttpClientBuilder.create()
                     .disableContentCompression()
                     .disableCookieManagement()
                     .useSystemProperties()
                     .disableRedirectHandling();
         }
     }
 }
吴谦
2023-03-14

在Spring启动版本Edgeware中,功能发生了变化。释放。

在Edgeware中。RELEASE:返回200和页面内容。

在道尔斯顿。SR4:返回302,浏览器重定向。

 类似资料:
  • 我试图通过spring boot学习Spring Security的基础知识,我创建了一个项目,其中还包括postgresql设置。Postgresql部分按预期工作。 问题是,在我通过正确的凭据访问安全endpoint后,我只是试图使用正确的用户名和错误的密码进行访问,并期待401错误,但返回200。并返回endpoint的内容。 如果我使用和进行基本身份验证请求,则响应为401 UnAutho

  • 问题内容: 我有一台服务器,从同一URL返回HTTP状态代码200、201和202。在Chrome浏览器中,我已经通过“网络”调试面板确认了状态代码是否符合我的预期(即200、201或202)。我依靠该状态码来确定下一步。 我希望jQuery(1.5.2版)AJAX的回调请求设置为服务器发送的状态代码。但是,即使服务器发送的代码是201或202,状态代码也始终为200。 换句话说,无论服务器发送什

  • 调用此获取操作时: 会引发一个异常...我的全局exc处理程序被触发。 当我的自定义响应返回给客户端时,我的小提琴手总是说: 结果:200 我还可以更改<code>返回Ok(数据)to

  • 我已经在我的AEM服务器上配置了ETag(使用ACS Commons ETag支持),并在Apache上禁用了ETag。但是一旦文件被缓存在调度程序上,Apache总是返回200和响应体,而不是304没有修改。我已经验证了ETag值存储在。h”文件,并且在响应中与请求的“如果不匹配”报头的值相同。如果我从调度程序中删除缓存的文件并重新发送请求,那么AEM会正确地返回304。 我还禁用了mod_de

  • 问题内容: 如果我返回一个对象: 状态代码将为200。如何将其更改为201,并显示一条消息并与json对象一起发送? 我不知道是否有一种方法可以在Laravel中设置状态代码。 问题答案: 您可以用来设置HTTP响应代码。 如果未传递任何参数,则http_response_code将获取当前状态码。如果您传递参数,它将设置响应代码。 对于Laravel: