我正在向我的本地webservice发出一个GET请求,我期望返回一个302响应,并在标题中包含一个位置。但是,我会得到一个未定义的响应和一个网络错误,即使我可以在本地看到请求正在被服务,并且响应被创建,而没有在webservice中出现任何错误。
我尝试过在邮递员和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]当我使用邮递员时,这个位置就在标题中。
我使用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并使位置标头重定向,但我希望避免这种情况,因为从技术上讲,它是一个重定向响应。
发布于 2017-01-25 18:09:38
请求的'customHeader':'token'部分,触发浏览器首先发送CORS飞行前选项请求。。除了定义为CORS.安全请求.标头触发器浏览器的标头之外,添加到请求中的任何标题都可以发送CORS预飞选项请求。
你不能从邮递员那里得到这个信息的原因是,与浏览器引擎不同,邮递员没有实现CORS,所以它不会发送选项请求。(Postman并不是在浏览器为Web应用程序执行的相同来源的Web安全模型下工作的。)
如果服务器没有以正确的方式响应CORS预飞选项请求,则您的请求将失败,唯一的解决办法是不将'customHeader':'token'部件添加到您的请求中,或者以任何方式构造您的请求,从而触发浏览器执行CORS预运行。
https://stackoverflow.com/questions/41858010
复制相似问题