【问题标题】:Cross-Origin resources sharing when i dont have access to the server [duplicate]当我无权访问服务器时跨域资源共享[重复]
【发布时间】:2018-05-02 21:19:29
【问题描述】:

如果我有可能摆脱“Access-Control-Allow-Origin”错误,我一直在努力锻炼。

我正在从一些以 CSV 文件形式返回的报告中请求数据,但为了使它们正常工作,我必须使用禁用 CORS 的 chrome 插件。

在阅读了大量堆栈溢出问题和大量谷歌搜索后,我仍然无法判断这是我没有放入我的代码中的东西,还是需要打开它的存储数据的设置。

这是我请求数据的代码,请记住,这仅适用于插件并且我的 API 密钥已被删除。

function Getfueltype(){

    j=JSON.stringify

    $.ajax({
        url: 'https://api.bmreports.com/BMRS/FUELINSTHHCUR/v1?APIKey=&ServiceType=CSV',
        async: false,
        success: function (csvd) {
            data = $.csv.toArrays(csvd);
        },
        dataType: "text",
        complete: function () {         
            while (n < (data.length)-2) {
                fueltype = j( data[n].slice(1,2));
                GigaWatt = j(parseFloat(data[n].slice(2,3)));
                arr.push(fueltype);
                arr2.push(GigaWatt);

                n++
            }

            drawChart2(data);

        }
    });
}

【问题讨论】:

  • 你不能,这就是 CORS 的意义所在。这是一种防止人们做你想做的事的安全机制。
  • 您可以使用 CORS 代理 — 或者是一个公开的公共代理,或者您可以在 Heroku 上在 2-3 分钟内设置一个。有关详细信息,请参阅stackoverflow.com/questions/43871637/… 答案的如何使用 CORS 代理解决“No Access-Control-Allow-Origin 标头”问题部分

标签: javascript jquery ajax cors


【解决方案1】:

如果您在本地计算机上尝试此操作以在代码在服务器上生效之前对其进行测试,我使用 --allow-file-access-from-files 标志作为我的 chrome。

这可以让你绕过No Access-Control-Allow-Origin header问题。

例子:

  1. 在安装文件夹中创建 chrome.exe 的副本。
  2. 将该副本作为快捷方式发送到桌面。
  3. 右键单击 Chrome 快捷方式并将标志粘贴到 Target 框的末尾。 (参见下面的示例字符串)

目标 - "C:\Users\SuperCoolUser\AppData\Local\Google\Chrome\Application\chrome-copy.exe" --allow-file-access-from-files

希望能有所帮助。

【讨论】:

  • 不幸的是,数据来自我绝对无法访问的 api.bmreports.com。将来我想把这个项目放在一个网站上,这样这个解决方案就不实用了。谢谢
  • 我的错。我以为你的数据来自本地机器。
  • 不用担心,感谢您的帮助
猜你喜欢
  • 2013-04-01
  • 1970-01-01
  • 2013-05-12
  • 2011-05-07
  • 2014-01-18
  • 2013-01-12
  • 2011-09-21
  • 2018-05-04
  • 2011-07-05
相关资源
最近更新 更多