Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
请求在CURL中工作,但不在Ajax中工作_Ajax_Angularjs_Curl_Scrapyd - Fatal编程技术网

请求在CURL中工作,但不在Ajax中工作

请求在CURL中工作,但不在Ajax中工作,ajax,angularjs,curl,scrapyd,Ajax,Angularjs,Curl,Scrapyd,我有一个Scrapyd服务器正在运行并试图安排一个作业 当我在下面尝试使用CURL时,它正在工作 curl http://XXXXX:6800/schedule.json -d project=stackoverflow -d spider=careers.stackoverflow.com -d setting=DOWNLOAD_DELAY=2 -d arg1=val1 之后,我在angular中完成了一个小的代码UI,为它提供了一个GUI 我已经做了一个AJAX请求来完成上述工作 var

我有一个Scrapyd服务器正在运行并试图安排一个作业

当我在下面尝试使用CURL时,它正在工作

curl http://XXXXX:6800/schedule.json -d project=stackoverflow -d spider=careers.stackoverflow.com -d setting=DOWNLOAD_DELAY=2 -d arg1=val1
之后,我在angular中完成了一个小的代码UI,为它提供了一个GUI

我已经做了一个AJAX请求来完成上述工作

 var baseurl = GENERAL_CONFIG.WebApi_Base_URL[$scope.server];
            var URI = baseurl +"schedule.json";  //http://XXXXX:6800/schedule.json
           var headers = {'content-type': 'application/x-www-form-urlencoded'}

            console.log(URI)

             $http.post( URI,data =  $scope.Filters,  headers).success(function (data, status) {


                console.log(data)


            }).error(function (data, status) {
                console.log(status);

                alert("AJAX failed!");
            });
但是我得到的
请求的资源上没有“访问控制允许源”标题。
错误

有谁能帮我解决这个问题吗

为什么它在CURL中工作,而在我的AJAX中不工作


谢谢,

这是因为称为同源策略的浏览器保护。它可以防止跨方案、主机名和端口号的不同组合的ajax请求。Curl没有这样的保护

为了防止它,您必须将api和客户端应用程序放在同一个域和端口上,或者将CORS头“”添加到服务器


另一个选择是使用。在这种情况下,这可能适用于只获取json数据。它不适合RESTAPI。在这个方面,我无法控制Scrapyd(Twisted服务器)在客户端级别是否有我可以做的事情,您可以使用,但它可能不适合,因为它实际上只允许just-get请求。这对restapi不好。你为什么要发布到.json扩展名上。我想您应该执行get,这样JSONP就可以工作了。。我使用的是Scrapyd,所以在我的请求url中有.json