如何解决Cordova 应用程序无权访问 HTTP 响应标头
我正在将 React 16 应用程序迁移到 Apache Cordova (v10.0)。我正在使用 axios HTTP 库。
当我运行原始版本时,我的应用程序可以访问带有响应对象中的不记名令牌(等)的身份验证响应标头。但是当我运行相同的应用程序并从 Cordova 发出相同的请求时,我无法获得身份验证令牌。当我 console.log
响应对象时,Cordova 版本只接收两个标头:cache-control
和 content-type
。
import axios from 'axios';
const myApi = axios.create({
withCredentials: false,headers: {
'Accept': 'application/json','Cache-Control': 'no-cache'
}
});
myApi.post(authenticationPath,{
email: 'foo@example.com',password: 'bar'
})
.then( response => {
console.log(response);
// In the original version,response.headers has auth token,etc
// In the Cordova version,response.headers only has cache-control + content-type
})
更新:我检查了开发工具中的原始 HTTP 响应,缺少的标头 在那里。所以看起来我的后端 API 响应正确,但由于某种原因 javascript 无法在响应对象中看到它们(在我的应用程序的 Cordova 版本中)
解决方法
我在这里找到了问题的解决方案:Axios get access to response header fields
TLDR = 对于 CORS 响应,浏览器只能看到几个“安全”标头。要查看其余部分,服务器需要使用额外的标头将它们显式列入白名单。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。