【问题标题】:localhost is therefore not allowed accesslocalhost 因此不允许访问
【发布时间】:2015-02-05 17:40:17
【问题描述】:

为了解决 CORS 问题,我在那里写了

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');
header("Access-Control-Allow-Headers: X-Requested-With"); 

在我的服务器站点中

但是在我的开发过程中我看到了这个错误

The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed. Origin 'http://localhost' is therefore not allowed access.

我认为 allow-origin: * 会解决所有问题?但是为什么它说 header 包含多个值?

【问题讨论】:

标签: php ajax cross-browser cross-domain cors


【解决方案1】:

这是意外启用 CORS 两次时的常见问题。检查以确保您没有在 apache 中启用它,或者没有设置标头两次。作为健全性检查,您可以尝试删除标题并将其添加回来,然后再提供响应。

例如:

header_remove('Access-Control-Allow-Origin');
header('Access-Control-Allow-Origin: *');

【讨论】:

  • @mike19911 K 那么我的怀疑是正确的。做的不仅仅是复制粘贴该代码:)。它并没有解决问题,它只是清楚地确定了需要解决的问题:)。
【解决方案2】:

由于浏览器安全限制,大部分Ajax请求都受同源策略的约束;请求无法从不同的域、子域、端口或协议成功检索数据。但 Script 和 JSONP 请求不受同源策略限制。

如果你还没有使用过 JSONP。维基百科说

JSONP 或“带填充的 JSON”是对基本 JSON 数据的补充 格式,一种允许页面请求的使用模式等等 有意义地使用来自主服务器以外的服务器的 JSON。

所以你的 ajax 调用应该是这样的:

$.ajax({
        type: 'GET',
        crossOrigin: true,
        dataType: "jsonp",
        url: url,
        success: function(data) {
            console.log(data);
        }
    });

【讨论】:

    【解决方案3】:

    使用 * 将不起作用。下面的 PHP 代码将接受来自所有域的所有请求,并适用于 IE、Firefox、Chrome 和 Safari。

    $origin=isset($_SERVER['HTTP_ORIGIN'])?$_SERVER['HTTP_ORIGIN']:$_SERVER['HTTP_HOST'];
    header('Access-Control-Allow-Origin: '.$origin);        
    header('Access-Control-Allow-Methods: POST, OPTIONS, GET, PUT');
    header('Access-Control-Allow-Credentials: true');
    header('Access-Control-Allow-Headers: Authorization, X-Requested-With');
    header('P3P: CP="NON DSP LAW CUR ADM DEV TAI PSA PSD HIS OUR DEL IND UNI PUR COM NAV INT DEM CNT STA POL HEA PRE LOC IVD SAM IVA OTC"');
    header('Access-Control-Max-Age: 1');
    

    接受来自所有域的请求是不安全的。如需更好(但稍微复杂一点)的解决方案,请参阅此处:CORS That Works In IE, Firefox, Chrome And Safari

    【讨论】:

      猜你喜欢
      • 2017-03-19
      • 2018-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-26
      相关资源
      最近更新 更多