【问题标题】:CORS - Response to preflight request doesn't pass access control checkCORS - 对预检请求的响应未通过访问控制检查
【发布时间】:2018-05-24 09:25:43
【问题描述】:

我正在尝试向服务器发送 GET 请求(服务器和本地主机具有相同的域),但是我不断收到以下错误:

对预检请求的响应未通过访问控制检查:否 请求中存在“Access-Control-Allow-Origin”标头 资源。

这是我用来发送请求的代码

$.ajaxSetup({
            headers: {
                'Access-Control-Allow-Origin': "*",
                'Access-Control-Allow-Methods': "GET, POST, PATCH, PUT, DELETE, OPTIONS",
                'Access-Control-Allow-Headers': "Origin, Content-Type, X-Auth-Token"
            }
        });
            $.get(myurl, function(data) {

                console.log(data);
            });

我不知道如何解决这个错误,因为我是 web 开发的新手。

【问题讨论】:

  • 您需要在 API 端点上设置这些标头,您点击的 URL 表示 myurl 不在您的 ajax 请求中。
  • 嗨,Keselme,这个问题下的答案有帮助吗?如果一个答案回答了您的问题,通常会将其标记为已接受。你可以找到more details in Help Center

标签: javascript jquery ajax


【解决方案1】:

对预检请求的响应未通过访问控制检查:请求的资源上没有“Access-Control-Allow-Origin”标头

访问控制控制标头必须由响应服务器发送。根据响应和请求页面,浏览器可能会允许请求继续,只是显示您收到的错误。

如果添加标头就足够了,那么任何 CORS 策略都将没有实际意义:任何页面都可以访问任何资源。

服务器和本地主机同域

我不确定您的意思,但显然您的页面是从不同于myurl 指向的域加载的。

【讨论】:

    【解决方案2】:

    访问控制标头应该由服务器发送,而不是由客户端发送。

    【讨论】:

      【解决方案3】:

      您必须在您的服务器应用程序中设置 Access-Control,如果您的后端是在 java 上,那么您可以使用过滤器来设置 Access-Control 标头

      【讨论】:

        猜你喜欢
        • 2019-09-09
        • 2019-01-04
        • 2019-12-02
        • 1970-01-01
        • 2017-11-09
        • 2017-04-28
        • 2016-06-05
        相关资源
        最近更新 更多