我正在使用fetch
从我的其他服务器获取数据,并且我在客户端使用此查询和Javascript:
return fetch(
"http://localhost:443/myressource", {
method: 'GET',
mode: 'no-cors',
credentials : 'include',
headers: {
"Authorization":"Basic " + btoa("test:test"),
"Accept-Encoding": "gzip, deflate"
}})
.then(response => response.text())
.catch(err => { throw err })
问题是第一个请求已经包含凭据,通常当您发送请求时,第一个请求没有凭据,您必须在服务器端设置域,然后浏览器应该发送凭据。
有没有办法让抓取工作正常进行?意思是在需要时发送凭证?
答案 0 :(得分:0)
不是100%了解您如何确定何时需要,但您可以执行以下操作:
let config = {
method: 'GET',
mode: 'no-cors',
credentials: 'include',
};
if (neededCondition) {
config.headers = {
"Authorization": "Basic " + btoa("test:test"),
"Accept-Encoding": "gzip, deflate"
};
}
return fetch( "http://localhost:443/myressource", config)
.then(response => response.text())
也许这可以通过使用sessionStorage并检查是否存在凭证来确定