Angularjs gocd-编号';访问控制允许原点';请求的资源上存在标头
我想使用它们的API将工件上传到gocd管道,API是Angularjs gocd-编号';访问控制允许原点';请求的资源上存在标头,angularjs,api,oauth,cors,go-cd,Angularjs,Api,Oauth,Cors,Go Cd,我想使用它们的API将工件上传到gocd管道,API是POST/go/files/:pipeline\u name/:pipeline\u counter/:stage\u name/:stage\u counter/:job\u name/*path\u to\u file。我有启用google oauth2的nodejs应用程序。我正在上传文件,并使用angularjs中的POST请求上传它们 <script> angular.module('fupApp', [])
POST/go/files/:pipeline\u name/:pipeline\u counter/:stage\u name/:stage\u counter/:job\u name/*path\u to\u file
。我有启用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>
角度。模块('fupApp',[])
.directive('ngFiles',['$parse',function($parse){
功能fn_链接(范围、元素、属性){
var onChange=$parse(attrs.ngFiles);
元素。on('change',函数(事件){
onChange(作用域,{$files:event.target.files});
});
};
返回{
链接:fn_链接
}
} ])
.controller('fupController',函数($scope,$http){
var formdata=new formdata();
$scope.getTheFiles=函数($files){
angular.forEach($文件、函数(值、键){
formdata.append(键、值);
});
};
//现在上传文件。
$scope.uploadFiles=函数(){
var请求={
方法:“POST”,
url:'https://:8154/go/files/FirstPipeline/13/defaultStage/1/defaultJob/',
数据:formdata,
标题:{
“内容类型”:“多部分/表单数据”
}
};
//发送文件。
$http(请求)
.成功(功能(d){
警戒(d);
})
.错误(函数(){
});
}
});
我正在尝试从mydomain2.net向mydomain1.net请求(这是gocd)。但是,在浏览器中,在选择文件并单击提交后,我在检查(Ctrl+Shift+I)后出现此错误
CORS策略已阻止从源“”访问“”处的XMLHttpRequest:请求的资源上不存在“访问控制允许源”标头
应在GoCD侧的哪里添加
访问控制允许原点标题 当位于不同域下的一个网页试图访问不同域的资源时,浏览器会引发跨源错误
如果请求者不是浏览器,则CORS不适用。
因此,您可以在两者之间设置代理服务器。检查此问题的编辑部分:
通常情况下,代理不应该在生产中的实际应用程序中使用,但据我所知,您试图实现的是用于开发工作流的CI/CD集成。所以应该没问题
您还可以在谷歌上搜索如何在NodeJS环境中为AngularJS设置代理 当位于不同域下的一个网页试图访问不同域的资源时,浏览器会引发跨源错误
如果请求者不是浏览器,则CORS不适用。
因此,您可以在两者之间设置代理服务器。检查此问题的编辑部分:
通常情况下,代理不应该在生产中的实际应用程序中使用,但据我所知,您试图实现的是用于开发工作流的CI/CD集成。所以应该没问题
您还可以在谷歌上搜索如何在NodeJS环境中为AngularJS设置代理 从GoCD源代码和文档中可以看出,它没有对CORS的内置支持。相反,支持从浏览器中运行的前端JavaScript代码向其发出请求的推荐方法是在两者之间放置一个“反向代理”(类似于@talhature所建议的)。请参阅@sideshowbarker上的文档,谢谢。我会考虑反向代理。如果我想在gocd服务器端添加Access Control Allow Origin
头,您能帮助我在哪里添加配置吗?是在安装nginx之后,我的服务器在哪里,然后在某个文件中,还是在哪里?我对nginx完全是新手。就我从GoCD源代码和文档中可以看出,它没有对CORS的内置支持。相反,支持从浏览器中运行的前端JavaScript代码向其发出请求的推荐方法是在两者之间放置一个“反向代理”(类似于@talhature所建议的)。请参阅@sideshowbarker上的文档,谢谢。我会考虑反向代理。如果我想在gocd服务器端添加Access Control Allow Origin
头,您能帮助我在哪里添加配置吗?是在安装nginx之后,我的服务器在哪里,然后在某个文件中,还是在哪里?我对nginx完全陌生。谢谢您的及时回复!我将尝试反向代理:)您好,我希望您不要错过这样一个事实,即我在这里引用的代理是反向代理。所以你不认为我至少应该得到一张赞成票吗:)谢谢你的及时回答!我将尝试反向代理:)您好,我希望您不要错过这样一个事实,即我在这里引用的代理是反向代理。所以你不认为我至少应该得到一张选票吗:)