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

Axios可以访问响应头字段

艾嘉石
2023-03-14

我正在用React和Redux构建一个前端应用程序,我正在使用axios来执行我的请求。我想访问响应标题中的所有字段。在我的浏览器中,我可以检查标头,我可以看到我需要的所有字段都存在(如令牌、uid等),但是当我调用时

const request = axios.post(`${ROOT_URL}/auth/sign_in`, props);
request.then((response)=>{
  console.log(response.headers);
});

我得到的只是

Object {content-type: "application/json; charset=utf-8", cache-control: "max-age=0, private, must-revalidate"}

这里是“我的浏览器网络”选项卡,您可以看到所有其他字段都存在。

最好的。

共有3个答案

呼延珂
2023-03-14

我也面临着同样的问题。我在我的WebSecurity.java中这样做了,这是关于CORS配置中的setExposedHeaders方法。

@Bean
CorsConfigurationSource corsConfigurationSource() {

    CorsConfiguration configuration = new CorsConfiguration();
    configuration.setAllowCredentials(true);
    configuration.setAllowedOrigins(Arrays.asList(FRONT_END_SERVER));
    configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE"));
    configuration.setAllowedHeaders(Arrays.asList("X-Requested-With","Origin","Content-Type","Accept","Authorization"));
    
    // This allow us to expose the headers
    configuration.setExposedHeaders(Arrays.asList("Access-Control-Allow-Headers", "Authorization, x-xsrf-token, Access-Control-Allow-Headers, Origin, Accept, X-Requested-With, " +
            "Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers"));
    
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    source.registerCorsConfiguration("/**", configuration);
    return source;
}

我希望它能起作用。

范兴文
2023-03-14

这真的帮助了我,谢谢尼克·乌拉尔采夫的回答。

对于在cors中使用nodejs的用户:

...
const cors = require('cors');

const corsOptions = {
  exposedHeaders: 'Authorization',
};

app.use(cors(corsOptions));
...

在这种情况下,您以res.header('Authorization','Bearer${token}`)的方式发送响应。send()

厉钊
2023-03-14

对于CORS请求,默认情况下浏览器只能访问以下响应头:

  • 缓存控制

如果希望客户端应用能够访问其他头,则需要在服务器上设置“访问控制公开头”头:

Access-Control-Expose-Headers: Access-Token, Uid
 类似资料:
  • 我正在使用Redux工具包的反应,但我正在unbale访问响应头

  • 问题内容: 我正在尝试使用Ajax来获取HTML页面,然后通过其ID提取div,然后将该DIV插入当前页面。因此,当前页面(通过Ajax)加载第二个页面,将div从Ajax响应中拉出并插入到当前页面中。但是我很茫然,除非响应是text / xml,否则我不能在上面使用任何DOM函数…可以吗? 问题答案: jQuery(或其他库?)基本上将为您完成所有这些工作。我强烈建议您对此进行研究,而不要重新发

  • 问题内容: 我想解析Web请求的响应,但是在以字符串形式访问它时遇到了麻烦。 如何以字符串形式访问响应?将响应正确地写入文件。 我已经检查过包参考,但并没有真正的帮助。 问题答案: 应该足以给你一个字符串。 从那里,您可以将其用作常规字符串。 有点像这个线程: 另请参阅GoByExample。 如下所述在zzn的答案中,这是一次转换 (请参阅spec)。 有些转换与强制转换相同,例如,只是重新解释

  • 问题内容: 有没有一种方法不显示http响应的头文件。 例如 : 显示字段 服务器 时,它可能是一个不好的实践。我以为tomcat 有一种 生产模式 ,可以隐藏一些标题字段。 谢谢。 问题答案: 在server.xml文件中,添加到连接器以更改标头名称。我相信只是会删除标题或发送空白,但我并不乐观。 因此,您的连接器将如下所示: 请注意,在开发机器上进行更改时遇到问题。我认为这是Netbeans寻

  • 我正在尝试访问为执行验证而编写的HttpServerResponse主体。但是,<代码>ctx。回答endHandler(e-

  • 问题内容: 由于增加了头的记录(ProducerRecord&ConsumerRecord)在卡夫卡0.11,是有可能处理与卡夫卡流的话题时,得到这些标题?当调用类似on的方法时,它提供记录的和的参数,但是我看不到访问的方法。如果我们可以刚好超过s ,那就太好了。 例如 这样的事情会工作: 问题答案: 自Streams API 2.0版以来,可以访问记录头。(有关详细信息,请参见KIP-244。)