【问题标题】:Can't enable CORS in Chrome无法在 Chrome 中启用 CORS
【发布时间】:2016-12-20 02:05:13
【问题描述】:

注意:这在 Firefox 中有效,但在 Chrome 中无效。为什么?我想念什么?

当我尝试在表单中运行编辑功能时,它应该通过 AngularJS 获取数据。

var i;
var url = window.location.href;
var param = url.split("?");
    param = param[param.length - 1];

var jsonUrl = "http://api.hiremein.rs/?" + param;

$(".update-book").click(function(){
    i = $( this ).data('key');
});
var rest = angular.module('rest', []);
rest.controller('restCtrl', function($scope, $http) {
    $(".update-book").click(function(){
        setTimeout(function(){
        $http.get(jsonUrl, function(req, res){
            res.header("Access-Control-Allow-Origin", "*");
            res.header("Access-Control-Allow-Origin", "X-Requested-With");
            res.send(
                {jsonUrl}
            );
        })
            .success(function (response) {
                $scope.names = response.data[i]; 
            });
        }, 300); 
    });
});

执行代码时出现此错误:

XMLHttpRequest 无法加载 http://api.hiremein.rs/?page=1。请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin 'http://client.hiremein.rs' 因此不允许访问。

我也尝试添加

header("Access-Control-Allow-Origin: *");

到 client 和 API 端的index.php。

但错误并没有消失。

【问题讨论】:

  • 您是否只尝试过服务器端的域? CORS 可以做 *、null 或域 (hiremein.rs)
  • 如 res.header('Access-Control-Allow-Origin', 'api.hiremein.rs/');
  • 尝试这样做,在 Firefox 中可以正常工作,但在 Chrome 中仍然无法正常工作。在 Chrome 中一定有办法做到这一点。
  • 您不能在客户端中设置 CORS 标头(嗯,您可以,但它们会做任何有用的事情)。它们只能在您的服务器上设置以启用 CORS。服务器决定谁可以从浏览器访问它。而且,如果您在请求中放置了某些自定义标头,那么您还需要您的服务器支持使用 OPTIONS 请求进行预检。

标签: javascript php angularjs cors


【解决方案1】:

我可能错误地认为显示的代码是服务器端代码 - 经过反思,它看起来像客户端代码 - 在这种情况下,以下是无关紧要的

res.header("Access-Control-Allow-Origin", "X-Requested-With");

好吧,这看起来有 7 种错误...我确定 X-Requested-With 不是主机 - 也许你的意思是

res.header("Access-Control-Allow-Headers", "X-Requested-With");

当然,如果你有非标准的标头,你可能需要处理preflighting

【讨论】:

    猜你喜欢
    • 2015-02-19
    • 2020-11-19
    • 1970-01-01
    • 2018-09-13
    • 2019-06-13
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 2019-02-11
    相关资源
    最近更新 更多