【问题标题】:CSV PapaParse doesn't work for some linksCSV PapaParse 不适用于某些链接
【发布时间】:2017-06-02 17:13:08
【问题描述】:

我将 PapaParse 用于我的带有 JavaScript 的 CSV 文件。我可以使用 CSV 文件 from this websiteusing this link,这是第 5 个。使用此链接一切正常。

当我下载此文件,然后将其上传到 github 或我的一个网站,然后改用该链接时,就会出现问题。所以基本上,如果我使用托管在不同站点上的同一个文件,解析器就不起作用。知道为什么吗?

更新:

Rawgit 确实适用于 github.com 文件,但我似乎仍然无法解析我网站上的 CSV 文件。这只是一个链接,所以我不知道为什么它不起作用。想法?

另外,上面的第一个链接来自 github.io。为什么 github.io 上的 CSV 文件有效,而 github.com 或我网站上的文件无效?

document.getElementById('submit').addEventListener("click", function() {
  checkLogin();
});

function checkLogin() {

  /* DOESN'T WORK */
  // "https://github.com/dhust/test/blob/master/Formaldehyde.csv"
  // "http://csfor.us/cs1/wp-content/uploads/2017/06/Formaldehyde.csv"

  /* WORKS */
  // "https://vincentarelbundock.github.io/Rdatasets/csv/datasets/Formaldehyde.csv"

  Papa.parse("https://vincentarelbundock.github.io/Rdatasets/csv/datasets/Formaldehyde.csv", {
    download: true,
    complete: function(results) {
      document.getElementById("output").innerHTML = results.data;
      console.log(results.data);
    }
  });
}
<script src="https://cdn.rawgit.com/mholt/PapaParse/3bf63f0a/papaparse.min.js"></script>
<input id="submit" type="button" value="Submit" />
<p id="output"></p>

Link to JSFiddle

【问题讨论】:

    标签: javascript csv papaparse


    【解决方案1】:

    Github 不允许直接下载此类文件(请参阅 https://stackoverflow.com/a/4605068/320546)。

    另外需要注意的是,您的 Javascript 控制台会有类似

    XMLHttpRequest cannot load https://github.com/dhust/test/blob/master/Formaldehyde.csv. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://fiddle.jshell.net' is therefore not allowed access.

    但是,如果您使用 RawGit,您可以获得一个应该可以工作的链接,而且在 JSFiddle 上似乎确实没问题

    【讨论】:

    • Rawgit 确实有效。知道为什么它在我自己的网站上不起作用吗?我需要为学生提供更好的解决方案。
    • 再次查看 Javascript 控制台。在全 HTTPS 的 JSFiddle 上,Chrome 不会让您从您的网站加载,因为它是 HTTP Mixed Content: The page at 'https://jsfiddle.net/davehust/rkk86ery/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://csfor.us/cs1/wp-content/uploads/2017/06/Formaldehyde.csv'. This request has been blocked; the content must be served over HTTPS.
    • 感谢您的帮助。
    【解决方案2】:

    感谢 palfrey 引导我朝着正确的方向前进。这是解决我的问题的方法:

    1. 为我的每个网站添加 SSL(基本 SSL 免费)
    2. 将此添加到每个网站根文件夹中的 .htaccess 文件中

      Header add Access-Control-Allow-Origin "*"
      Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
      Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
      

    【讨论】:

    • 仍然需要研究是否需要所有这些方法。似乎允许太多,并且可能允许恶意活动。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    • 1970-01-01
    • 2016-06-19
    • 2017-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多