gocd - 请求的资源上不存在 'Access-Control-Allow-Origin' header
gocd - No 'Access-Control-Allow-Origin' header is present on the requested resource
我想使用 API 即 POST /go/files/:pipeline_name/:pipeline_counter/:stage_name/:stage_counter/:job_name/*path_to_file
将工件上传到 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) 后收到此错误。
Access to XMLHttpRequest at 'https://mydomain1:8154/go/files/FirstPipeline/13/defaultStage/1/defaultJob/' from origin 'http://mydomain2:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
GoCD端的Access-Control-Allow-Origin
header应该加在什么地方?
当不同域下的一个网页试图访问不同域的资源时,浏览器会引发跨源错误。
如果请求者不是浏览器,CORS不适用。
所以你可以在两者之间设置一个代理服务器。检查此问题的编辑部分:How to enable CORS in AngularJs
通常情况下,代理不应在生产中的实际应用程序中使用,但据我了解,您想要实现的是 CI/CD 集成您的开发工作流程。所以应该没问题。
您还可以 google 如何在 NodeJS 环境中为 AngularJS 设置代理。
我想使用 API 即 POST /go/files/:pipeline_name/:pipeline_counter/:stage_name/:stage_counter/:job_name/*path_to_file
将工件上传到 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) 后收到此错误。
Access to XMLHttpRequest at 'https://mydomain1:8154/go/files/FirstPipeline/13/defaultStage/1/defaultJob/' from origin 'http://mydomain2:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
GoCD端的Access-Control-Allow-Origin
header应该加在什么地方?
当不同域下的一个网页试图访问不同域的资源时,浏览器会引发跨源错误。
如果请求者不是浏览器,CORS不适用。 所以你可以在两者之间设置一个代理服务器。检查此问题的编辑部分:How to enable CORS in AngularJs
通常情况下,代理不应在生产中的实际应用程序中使用,但据我了解,您想要实现的是 CI/CD 集成您的开发工作流程。所以应该没问题。
您还可以 google 如何在 NodeJS 环境中为 AngularJS 设置代理。