gocd-所请求的资源上不存在“ Access-Control-Allow-Origin”标头

时间:2019-10-15 05:36:06

标签: angularjs api oauth cors go-cd

我想使用POST /go/files/:pipeline_name/:pipeline_counter/:stage_name/:stage_counter/:job_name/*path_to_file的API将工件上传到gocd管道。我有启用了Google oauth2的nodejs应用程序。我正在上传文件,并使用angularjs中的POST请求上传它们。

<script>
    angular.module('fupApp', [])
        .directive('ngFiles', ['$parse', function ($parse) {

            function fn_link(scope, element, attrs) {
                var onChange = $parse(attrs.ngFiles);
                element.on('change', function (event) {
                    onChange(scope, { $files: event.target.files });
                });
            };

            return {
                link: fn_link
            }
        } ])
        .controller('fupController', function ($scope, $http) {

            var formdata = new FormData();
            $scope.getTheFiles = function ($files) {
                angular.forEach($files, function (value, key) {
                    formdata.append(key, value);
                });
            };

            // NOW UPLOAD THE FILES.
            $scope.uploadFiles = function () {

                var request = {
                    method: 'POST',
                    url: 'https://<mydomain1.net>:8154/go/files/FirstPipeline/13/defaultStage/1/defaultJob/',
                    data: formdata,
                    headers: {
                        'Content-Type': 'multipart/form-data'
                    }
                  };

                // SEND THE FILES.
                $http(request)
                    .success(function (d) {
                        alert(d);
                    })
                    .error(function () {
                    });
            }
        });
</script>

我正在尝试从 mydomain2.net 请求到 mydomain1.net (这是gocd)。但是在浏览器中,选择文件并单击提交后,在检查(Ctrl + Shift + I)后出现此错误。

  

CORS策略已阻止从来源“ https://mydomain1:8154/go/files/FirstPipeline/13/defaultStage/1/defaultJob/”访问“ http://mydomain2:3000”处的XMLHttpRequest:请求的资源上没有“ Access-Control-Allow-Origin”标头。

Access-Control-Allow-Origin标头应放在GoCD端的什么位置?

1 个答案:

答案 0 :(得分:0)

当位于不同域下的一个网页尝试访问不同域的资源时,浏览器会引发跨域错误。

如果请求者不是浏览器,则CORS不适用。 因此,您可以在两者之间设置代理服务器。检查此问题的编辑部分:How to enable CORS in AngularJs

通常,不应在生产中的实际应用程序中使用代理,但据我了解,您要实现的是开发流程的CI / CD集成。所以应该没事。

您还可以通过谷歌搜索如何在NodeJS环境中为AngularJS设置代理。