CORS:对预检请求的响应未通过访问控制检查 - 如何在本地主机上解决它?

gee*_*ekt 7 javascript xmlhttprequest access-control cors

我是 JavaScript 的初学者,我正在尝试编写一个脚本来检查网站是否https://example.com返回 404 状态代码或 200,并根据结果,我将访问它或不访问它。我正在前端执行此操作。我没有服务器端,因为该网站是静态网站,不使用数据库。我正在使用 XMLHttpRequest 执行此操作。

 url = $("#foo").attr("href")
    function UrlExists(ur)
    {
        var http = new XMLHttpRequest();
        http.open('GET', ur, true);
        http.setRequestHeader("Access-Control-Allow-Origin", "http, https");
        http.setRequestHeader("Access-Control-Allow-Methods", "PUT, GET, POST, DELETE, OPTONS");
        http.setRequestHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization")
        http.send();
        console.log(http.status);
    }
    UrlExists(url)
Run Code Online (Sandbox Code Playgroud)

问题是当我运行此脚本时,抛出以下异常:

CORS 策略已阻止从源“null”访问 XMLHttpRequest 'http://example.com':对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。

从我到目前为止读到的内容来看,这更像是 CORS 问题而不是 JavaScript,而且到目前为止我还找不到解决方案。

有人可以帮助我解决这个问题并解释为什么吗?我已经检查了有关 SO 的其他问题,到目前为止,我没有找到可行的解决方案。如果有的话,我也愿意接受其他解决方案。太感谢了!

我非常感谢您的宝贵时间!

更新1: 不幸的是,我仍在为这个问题而苦苦挣扎。我已经阅读了很多有关 CORS 策略的内容,问题是我不知道应该如何安全地允许标头通过请求从我的服务器发送到另一台服务器。资源是:一个 HTML 页面和其中的一些 JS 代码。正如我上面提到的,我试图从我的网站向另一个网站发送请求以检查该网站的状态,如果弹出 404,我想重定向我的用户。

Rak*_*pta 5

您需要在 Web 服务器上设置 CORS 标头。出于安全原因,它默认处于禁用状态。

例如,在 Nginx 中,你可以这样做

add_header Access-Control-Allow-Origin example.com;

如果您使用的托管服务不允许修改网络服务器配置,您可以将所需的标头添加到您的 .htaccess 文件中,如下所示。换句话说,将其放置在包含 index.html 的项目根目录中。另外,将权限更改为 644。

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"
Run Code Online (Sandbox Code Playgroud)

参考:

/sf/answers/1405790711/

https://blog.container-solutions.com/a-guide-to-solving-those-mystifying-cors-issues