离子图标未显示在ipad /边缘上

时间:2018-11-22 15:45:27

标签: ipad microsoft-edge stenciljs ionicons

我在身份验证服务后面的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

1 个答案:

答案 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);
    });
  });
}