Chrome 阻止来自外部系统的 Iframe "Set-Cookies" header 并发出警告:"This Set-Cookie was blocked due to user preferences"
Chrome blocking Iframe from external system "Set-Cookies" header with warning: "This Set-Cookie was blocked due to user preferences"
我构建了一个嵌入 Qlik Sense iframe 的 Web 应用程序,这意味着来自外部服务器的 iframe。这是获取调用的样子:
return fetch("https://servername/prefix/qrs/about?xrfkey=<key>", {
method: 'GET',
mode: 'cors',
credentials: 'include',
headers: {
'Content-Type': 'application/json',
'X-Qlik-xrfkey': '<key>',
'Authorization': 'Bearer ' + token
},
}).then(response => {
return response.status === 200;
});
为了对 Qlik iframe 进行身份验证,我使用了在 Qlik Sense 中注册的 JWT。作为回复,我收到了回复 header“Set-Cookie”和相应的 session 标记。 但是 Chrome 似乎阻止了带有警告的 cookie“由于用户偏好,此 Set-Cookie 被阻止”。 它在 Edge 和 Firefox 中有效。
因为我在开发,所以我使用“localhost:8080”。我读到 Chrome 忽略了 http://localhost 上的 cookie,所以我尝试使用 SSL -> "https://localhost:8080" 但没有用。此外,我已经通过 IP 尝试过,所以“https://127.0.0.1:8080”也没有用。
此外,我配置了后端(Qlik 管理控制台),使 SameSite = None 并且它使用“安全”属性,因为我读到这也可能导致问题。另外我正在使用
credentials 'include'
属性。
这些是我的请求 headers
Request headers
这是回复 headers
Response headers
你们中有人知道如何为 chrome 解决这个问题吗?您需要更多信息吗?
提前致谢!
干杯
好的,找到解决方案了。如果有人遇到同样的问题:我总是使用隐身 Chrome 来避免缓存问题。并且有一个设置在默认情况下以隐身模式阻止所有第 3 方 cookie:
Chrome 3rd party cookies incognito mode
将其更改为“接受”后,它就会起作用。干杯
我构建了一个嵌入 Qlik Sense iframe 的 Web 应用程序,这意味着来自外部服务器的 iframe。这是获取调用的样子:
return fetch("https://servername/prefix/qrs/about?xrfkey=<key>", {
method: 'GET',
mode: 'cors',
credentials: 'include',
headers: {
'Content-Type': 'application/json',
'X-Qlik-xrfkey': '<key>',
'Authorization': 'Bearer ' + token
},
}).then(response => {
return response.status === 200;
});
为了对 Qlik iframe 进行身份验证,我使用了在 Qlik Sense 中注册的 JWT。作为回复,我收到了回复 header“Set-Cookie”和相应的 session 标记。 但是 Chrome 似乎阻止了带有警告的 cookie“由于用户偏好,此 Set-Cookie 被阻止”。 它在 Edge 和 Firefox 中有效。
因为我在开发,所以我使用“localhost:8080”。我读到 Chrome 忽略了 http://localhost 上的 cookie,所以我尝试使用 SSL -> "https://localhost:8080" 但没有用。此外,我已经通过 IP 尝试过,所以“https://127.0.0.1:8080”也没有用。
此外,我配置了后端(Qlik 管理控制台),使 SameSite = None 并且它使用“安全”属性,因为我读到这也可能导致问题。另外我正在使用
credentials 'include'
属性。
这些是我的请求 headers Request headers
这是回复 headers Response headers
你们中有人知道如何为 chrome 解决这个问题吗?您需要更多信息吗?
提前致谢! 干杯
好的,找到解决方案了。如果有人遇到同样的问题:我总是使用隐身 Chrome 来避免缓存问题。并且有一个设置在默认情况下以隐身模式阻止所有第 3 方 cookie:
Chrome 3rd party cookies incognito mode
将其更改为“接受”后,它就会起作用。干杯