【发布时间】:2017-06-11 00:17:39
【问题描述】:
我正在向我的本地 Web 服务发出 GET 请求,我期望返回 302 响应,并在标头中包含一个位置。但是,即使我可以在本地看到正在处理请求并且正在创建响应,并且 Web 服务中没有任何错误,我也会收到未定义的响应和网络错误。
我在 Postman 和 Chrome 中尝试过,它会收到重定向响应并进行相应的重定向。
我不确定这是否是 CORS 问题,如果是,我该如何解决?
我已经在 CORS 过滤器的响应头中添加了
Access-Control-Expose-Headers: Location, [own headers]
Access-Control-Allow-Origin: '*'
Access-Control-Allow-Methods: POST, PUT, GET, OPTIONS, DELETE
Access-Control-Max-Age: [some age]
Access-Control-Allow-Headers: [own headers]
当我使用 Postman 时,该位置出现在标题中
我使用 Axios 发出的请求和配置是
const config = {
url: [someURL],
method: 'GET',
headers: {
'customHeader':'token',
},
params: {
[params]
},
maxRedirects: 0,
validateStatus: status => (status >= 200 && status < 300) || status === 302,
};
如果响应在到达我的 JS 代码时未定义,但在 Postman 和 Chrome 中可以正常工作,任何帮助将不胜感激。
我可以解决此问题的一种方法是使用 HTTP 状态代码 200 并获取要重定向的位置标头,但我想避免这种情况,因为它在技术上是重定向响应。
【问题讨论】:
-
可能您可以尝试检查
readyState状态并寻找HEADERS_RECEIVED(xhr.spec.whatwg.org)。也检查这个stackoverflow.com/questions/228225/… 答案。 -
但我得到一个未定义的响应,其中不包括任何状态或响应正文或标题
标签: javascript cors axios