关于h5中的fetch方法解读(小结)

2020-04-24 19:16:57易采站长站整理

return response //正常返回原响应对象
} else {
var error = new Error(response.statusText) //不正常则抛出一个响应错误状态信息
error.response = response
throw error
}
}

function parseJSON(response) {
return response.json()
}

fetch('/users')
.then(checkStatus)
.then(parseJSON)
.then(function(data) {
console.log('request succeeded with JSON response', data)
}).catch(function(error) {
console.log('request failed', error)
})

2.一个很关键的问题,fetch方法不会发送cookie,这对于需要保持客户端和服务器端常连接就很致命了,因为服务器端需要通过cookie来识别某一个session来达到保持会话状态.要想发送cookie需要修改一下信息:


fetch('/users', {
credentials: 'same-origin' //同域下发送cookie
})
fetch('https://segmentfault.com', {
credentials: 'include' //跨域下发送cookie
})

下图是跨域访问segment的结果

Additional

如果不出意外的话,请求的url和响应的url是相同的,但是如果像redirect这种操作的话response.url可能就会不一样.在XHR时,redirect后的response.url可能就不太准确了,需要设置下:response.headers[‘X-Request-URL’] = request.url适用于( Firefox < 32, Chrome < 37, Safari, or IE.)