请求的资源上不存在“Access-Control-Allow-Origin”标头。与 github 站点

2023-12-26

http://kingdiepie.github.io/testing.html http://kingdiepie.github.io/testing.html

XMLHttpRequest 无法加载https://docs.google.com/spreadsheets/d/1_4d-MPxTUOVZbxTOlhjXv1ebTlBPQ-_JrYUlS1rqX5Q/pub?output=csv https://docs.google.com/spreadsheets/d/1_4d-MPxTUOVZbxTOlhjXv1ebTlBPQ-_JrYUlS1rqX5Q/pub?output=csv。请求的资源上不存在“Access-Control-Allow-Origin”标头。起源 'http://kingdiepie.github.io http://kingdiepie.github.io' 因此不允许访问。

我有一个 github 站点页面,正在尝试从 google 工作表中获取数据来创建 html 表,该代码在本地主机上运行良好,但在在线时无法运行。

<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  <script src="http://www.kryogenix.org/code/browser/sorttable/sorttable.js"></script>




  <head>
    <style>
      table.sortable thead {
        background-color: #eee;
        color: #666666;
        cursor: default;
      }
      /* Scrollability of table */
      table {
        width: 800px;
      }
      /* fixed width table */
      thead tr {
        display: block;
      }
      /* makes it sizeable */
      tbody {
        display: block;
        /* makes it sizeable */
        height: 600px;
        /* height of scrollable area */
        overflow: auto;
        /* scroll rather than overflow */
        width: 100%;
        /* fill the box */
      }
      thead th {
        width: 100px;
      }
      /* fixed width for THs */
      tbody td {
        width: 100px;
      }
      /* fixed width for TDs */
      table {
        color: #333;
        font-family: Helvetica, Arial, sans-serif;
        border-collapse: collapse;
        border-spacing: 0;
      }
      td,
      th {
        border: 1px solid transparent;
        /* No more visible border */
        height: 30px;
        transition: all 0.3s;
        /* Simple transition for hover effect */
      }
      th {
        background: #3086C2;
        /* Darken header a bit */
        font-weight: bold;
        color: white;
      }
      td {
        background: #000000;
        text-align: center;
      }
      /* Cells in even rows (2,4,6...) are one color */
      tr:nth-child(even) td {
        background: #EBEBF7;
      }
      /* Cells in odd rows (1,3,5...) are another (excludes header cells)  */
      tr:nth-child(odd) td {
        background: #FEFEFE;
      }
      tr td:hover {
        background: #3086C2;
        color: #FFF;
      }
      /* Hover cell effect! */
      body {
        margin: 0;
      }
      ul {
        list-style-type: none;
        margin: 0;
        padding: 0;
        width: 10%;
        background-color: #f1f1f1;
        position: fixed;
        height: 100%;
        overflow: auto;
      }
      li a {
        display: block;
        color: #000;
        padding: 8px 0 8px 16px;
        text-decoration: none;
      }
      li a.active {
        background-color: #3086C2;
        color: white;
      }
      li a:hover:not(.active) {
        background-color: #DFDFDF;
        color: #3086C2;
        font-weight: bold;
      }
      a:visited {
        color: #000000;
        text-decoration: none
      }
      a:link {
        color: #000000;
        text-decoration: none
      }
      table.sortable thead {
        background-color: #eee;
        color: #666666;
        font-weight: bold;
        cursor: default;
      }
    </style>
  </head>




</head>

<body>

  <script>
    var url = "https://docs.google.com/spreadsheets/d/1_4d-MPxTUOVZbxTOlhjXv1ebTlBPQ-_JrYUlS1rqX5Q/pub?output=csv";
    var cols = 8;
    var table = "<table class=\"sortable\" cellpadding=\"5\" id=\"theTable\">";
    xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
      if (xmlhttp.readyState == 4) {
        theData = xmlhttp.responseText;
        console.log(theData.substring(0));
        var rows = (theData.substring(0).split('"').length - 1) / 2 - 1;
        for (i = 0; i < rows; i++) {
          table += "<tr>"
          for (j = 0; j < cols; j++) {
            if (j == 0 || j == 5) {
              idx = theData.indexOf(',');
              theData = theData.substring(idx + 1)
            }
            if (i === 0) {
              table += '<th>';
              if (j === 7) {
                idx = theData.indexOf("\n");
                table += theData.substring(0, idx + 1);
                theData = theData.substring(idx + 1);
              } else {
                idx = theData.indexOf(',');
                table += theData.substring(0, idx + 1);
                theData = theData.substring(idx + 1);
              }

              if (table.lastIndexOf(",") === table.length - 1) {
                table = table.substring(0, table.length - 1);
              }
              table += '</th>';
            } else {
              table += "<td>"
              if (j === 7) {
                idx = theData.indexOf("\n");
                if (idx === -1) {
                  idx = theData.length;
                }
                table += theData.substring(0, idx + 1);
                theData = theData.substring(idx + 1);
              } else if (j != 5 && j != 6) {
                idx = theData.indexOf(',');
                table += theData.substring(0, idx + 1);
                theData = theData.substring(idx + 1);

              } else {

                theData = theData.substring(1);
                idx = theData.indexOf('"');
                data2 = theData.substring(0, idx);
                theData = theData.substring(idx + 1);
                theData = theData.substring(1);
                l = data2.substring(0).split(',').length;
                for (k = 0; k < l; k++) {
                  console.log(data2);
                  idx = data2.indexOf(",")
                  if (idx === -1) {
                    idx = data2.length;
                  }
                  table += data2.substring(0, idx);
                  table += "<br>"
                  data2 = data2.substring(idx + 1);
                }
              }
              if (table.lastIndexOf(",") === table.length - 1) {
                table = table.substring(0, table.length - 1);
              }
              table += "</td>"
            }
          }
          table += "</tr>"

        }
        table += "</table>"
        document.getElementById("display").innerHTML = table;
        var newTableObject = document.getElementById('theTable');
        sorttable.makeSortable(newTableObject);
      }
    };
    xmlhttp.open("GET", url, true);
    xmlhttp.send(null);
  </script>

  <div id="display"></div>
</body>

From: https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

当资源从与第一个资源本身所服务的域不同的域请求资源时,它会发出跨域 HTTP 请求。例如,一个 HTML 页面由http://域名-a.com http://domain-a.com发出 src 请求http://domain-b.com/image.jpg http://domain-b.com/image.jpg。如今网络上的许多页面都会加载来自不同域的资源,例如 CSS 样式表、图像和脚本。

出于安全原因,浏览器限制从脚本内发起的跨源 HTTP 请求。例如,XMLHttpRequest遵循同源策略。因此,使用 XMLHttpRequest 的 Web 应用程序只能向其自己的域发出 HTTP 请求。为了改进 Web 应用程序,开发人员要求浏览器供应商允许 XMLHttpRequest 进行跨域请求。

W3C Web 应用程序工作组推荐新的跨域资源共享 (CORS) 机制。 CORS 为 Web 服务器提供跨域访问控制,从而实现安全的跨域数据传输。现代浏览器在 API 容器(例如 XMLHttpRequest)中使用 CORS 来降低跨源 HTTP 请求的风险。

您收到的错误消息:No 'Access-Control-Allow-Origin' header is present on the requested resource

告诉您 Google 不允许https://docs.google.com/spreadsheets/d/1_4d-MPxTUOVZbxTOlhjXv1ebTlBPQ-_JrYUlS1rqX5Q/pub?output=csv https://docs.google.com/spreadsheets/d/1_4d-MPxTUOVZbxTOlhjXv1ebTlBPQ-_JrYUlS1rqX5Q/pub?output=csv资源是跨域的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

请求的资源上不存在“Access-Control-Allow-Origin”标头。与 github 站点 的相关文章

随机推荐