如何设置“访问控制允许来源:*”?

Posted

技术标签:

【中文标题】如何设置“访问控制允许来源:*”?【英文标题】:How to set "Access-Control-Allow-Origin: *"? 【发布时间】:2020-05-14 04:54:58 【问题描述】:

我有一个调用 JS 函数的简单 html

<body>
    <h1 onclick="scrape()"> Scrape! </h1>
    ...
    <script src="main.js"></script>
</body>

还有这个 JS 脚本(main.js):

function scrape() 
    var xhttp = new XMLHttpRequest();
    xhttp.open("GET", "https://www.wikipedia.org/", true)
    xhttp.send();

当我运行 scrape() 函数时,由于同源策略,它会返回错误。

在阅读了关于 this problem 的 SO 帖子后,我很困惑......

我读到“Access-Control-Allow-Origin: *”,这应该让我的网站可以访问其他网站的数据,但我不明白如何使用它,请你帮我告诉我如何使我的功能正常工作?

【问题讨论】:

这不是您需要实现的。这是在后端处理的,因此***允许您从不同的来源访问它。您可以从无浏览器环境中访问它 【参考方案1】:

如何设置“Access-Control-Allow-Origin: *”?

如果要求允许来自不同来源(域、子域等)的访问,您或任何后端开发人员应在服务器端设置该标头。在这种情况下,出于安全原因,Wikipedia 的后端并未设置该标头。

【讨论】:

好的,那我如何从其他网站抓取数据? @Flavié 你不能,只有网站的后端可以允许你请求的来源。 那么我没有办法访问其他网站的数据吗?我不知道,也许使用第三方程序? 不使用 javascript @Flavié 就像我说的那样,后端必须设置该标头,如果没有,则不可能。除非您有权访问后端代码。

以上是关于如何设置“访问控制允许来源:*”?的主要内容,如果未能解决你的问题,请参考以下文章

如何绕过访问控制允许来源?

如何绕过访问控制允许来源?

如何绕过访问控制允许来源?

如何绕过访问控制允许来源?

即使在设置时也出现访问控制允许来源问题

Firebase 存储和访问控制允许来源