CORS错误和不一致的行为

时间:2014-05-26 21:31:16

标签: javascript php ajax prototypejs cors

我正在尝试实现CORS,以便通过AJAX访问不同域上的资源。我在客户端使用PrototypeJS,在服务器端使用PHP。

在客户端,我正在做这样的事情:

new Ajax.Request(url, {
    method: 'get',
    onSuccess: function(transport){
        var json = transport.responseText.evalJSON();
        alert(json)
    },
    onFailure: function(transport) {
    }
});

在服务器端,我用这个开始我的PHP脚本以允许CORS:

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET');
header('Access-Control-Allow-Headers: Origin, Content-Type, Accept, X-Requested-With, X-Prototype-Version, X-JSON');

现在,大多数情况下,完美无缺。但是,有时我会看到奇怪的行为,而且我的一些用户遇到了问题。其中包括:

  • Firefox 29有时(但并非总是)在其日志中包含以下消息"阻止跨源请求:同源策略禁止读取远程资源....这可以通过移动资源来解决到同一个域或启用CORS。"但是,请求仍然完成。
  • Chrome 35每次都会记录以下错误,但也会完成请求"拒绝获取不安全的标题" X-JSON""

我让Chrome和Firefox的用户报告没有问题,而其他报告请求总是失败。我不知道为什么。

我在这里做错了吗?什么是最佳实践'做这样的事情?

0 个答案:

没有答案