我在身份验证服务后面的Nginx服务器中部署了一个stenciljs组件。为了获得任何东西,请求必须包含一个包含access_token的cookie。该组件在Android设备上以及台式机设备上的chrome / firfox / IE11 /上没有任何障碍。问题出在Microsoft Edge和ipad(任何导航器)上,其原因是浏览器未将cookie发送到服务器。有什么提示吗?
header.tsx
public static String convertMillisToHMmSs(long millis) {
long seconds = millis / 1000
long s = seconds % 60;
long m = (seconds / 60) % 60;
long h = (seconds / (60 * 60));
return String.format("%d:%02d:%02d", h,m,s);
}
PS:我正在使用模具/核心v0.15.2
答案 0 :(得分:1)
因此,经过一番挖掘,结果发现问题出在离子键实现上。 他们在不发送凭证的情况下获取svg,从而导致身份验证请求。当然,即使未明确指定应使用的导航器,例如chrome和firefox甚至IE11,它们也设法发送了cookie。 无论如何,要解决此问题,我必须创建一个在构建后运行的脚本文件。该脚本在提取调用中添加凭据:“ include”选项,以便发送Cookie。
fix-icons-script.js
/**
* Workaround to fix this ion-icons bug https://github.com/ionic-team/ionicons/issues/640
* To be removed when this bug is fixed
*/
const fs = require('fs');
const workDir = 'dist/component-dir';
fs.readdir(workDir, function(err, items) {
if (err) { return console.log(err); }
for (var i=0; i<items.length; i++) {
if (items[i].endsWith('.entry.js')) {
insertString(workDir + '/' + items[i], '"force-cache"', ',credentials:"include"');
}
}
});
function insertString(file, searchValue, insertValue){
fs.readFile(file, 'utf8', function (err, content) {
if (err) { return console.log(err); }
let newContent = content.substr(0, content.indexOf(searchValue) + searchValue.length);
content = content.substr(newContent.length, content.length);
newContent += insertValue + content;
fs.writeFile(file, newContent, function (err) {
if (err) { return console.log(err); }
console.log('Successfully rewrote ' + file);
});
});
}