我正在尝试通过fetch()请求和适当的标头获取XML数据。 请求成功,但响应为空。奇怪的是,调试器中的浏览器网络选项卡给了我200 OK并具有请求的Response有效负载,但是即使存在,我似乎也无法获得此数据。有什么线索吗?
data = {
get:(url)=>{
return new Promise(resolve => {
let auth = new Headers({
"username":key.user,
"password":key.password,
"Accept":"application/xml"
})
fetch(url,{
method:"get",
mode:"no-cors",
headers: auth,
credentials:"include"
})
.then(response => console.log(response))
//empty response
})
}
}
答案 0 :(得分:0)
您正在发出跨域请求,但您说了mode:"no-cors",
。
mode:"no-cors",
的意思是“如果我需要许可才能进行跨源操作,那么就不要提出要求,也不要抛出错误”。
no-cors-防止该方法成为HEAD,GET或POST之外的任何其他内容,并且阻止该标头成为简单标头之外的任何其他内容。如果有任何ServiceWorkers截获这些请求,则除了简单的标头外,它们不得添加或覆盖任何标头。此外,JavaScript可能无法访问所得Response的任何属性。这样可以确保ServiceWorkers不会影响Web的语义,并防止由于跨域泄漏数据而引起的安全和隐私问题。
由于您需要权限才能从跨域请求中读取数据,因此该操作会自动失败(因为您已明确要求这样做)。
使用mode: "cors"
。