提取请求不会返回请求的数据

时间:2019-03-05 10:54:12

标签: javascript xml fetch es6-promise

我正在尝试通过fetch()请求和适当的标头获取XML数据。 请求成功,但响应为空。奇怪的是,调试器中的浏览器网络选项卡给了我200 OK并具有请求的Response有效负载,但是即使存在,我似乎也无法获得此数据。有什么线索吗?

Snapshot of the debugger

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
                })
            }
        }

1 个答案:

答案 0 :(得分:0)

您正在发出跨域请求,但您说了mode:"no-cors",

mode:"no-cors",的意思是“如果我需要许可才能进行跨源操作,那么就不要提出要求,也不要抛出错误”。

  

no-cors-防止该方法成为HEAD,GET或POST之外的任何其他内容,并且阻止该标头成为简单标头之外的任何其他内容。如果有任何ServiceWorkers截获这些请求,则除了简单的标头外,它们不得添加或覆盖任何标头。此外,JavaScript可能无法访问所得Response的任何属性。这样可以确保ServiceWorkers不会影响Web的语义,并防止由于跨域泄漏数据而引起的安全和隐私问题。

由于您需要权限才能从跨域请求中读取数据,因此该操作会自动失败(因为您已明确要求这样做)。

使用mode: "cors"