Javascript 将cURL转换为angular 2 HTTP POST

Javascript 将cURL转换为angular 2 HTTP POST,javascript,angularjs,angular,curl,postman,Javascript,Angularjs,Angular,Curl,Postman,我想将此卷曲转换为角度2 post请求 curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -H "Authorization: Basic cGJob2xlOmlJelVNR3o4" -H "Origin: http://localhost:4200/form" -H "Postman-Token: fbf7ede1-4648-a330-14ee-85e6c29ee80d" -d 'content=Queue: t

我想将此卷曲转换为角度2 post请求

curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -H "Authorization: Basic cGJob2xlOmlJelVNR3o4" -H "Origin: http://localhost:4200/form" -H "Postman-Token: fbf7ede1-4648-a330-14ee-85e6c29ee80d" -d 'content=Queue: tsi-testdesk' "https://testdesk.ebi.ac.uk/REST/1.0/ticket/new?user=USER&pass=PASS"
这是我写的代码,但它不起作用

 addForm(form: Form): Observable<Form> {
     console.log(" SUBMITTING FORM");
    let headers = new Headers();
    this.loginService.writeAuthToHeaders(headers);
    // JSON.stringify(headers);
    // headers.append('Accept', 'application/x-www-form-urlencoded');
    headers.append('Content-Type', 'application/x-www-form-urlencoded');
    // let text = JSON.stringify(form)
    let content = ('content:Queue: tsi-testdesk');
    console.log(content);
     return this.http.post('https://testdesk.ebi.ac.uk/REST/1.0/ticket/new?user='+this.credentialsService.getUsername()+'&pass='+this.credentialsService.getPassword(), content, { headers: headers })
      // .map(response => <Form>response.json())
      .catch(this.handleError);
   }
addForm(form:form):可观察{
控制台日志(“提交表格”);
let headers=新的headers();
this.loginService.writeAuthToHeaders(headers);
//stringify(headers);
//headers.append('Accept','application/x-www-form-urlencoded');
headers.append('Content-Type','application/x-www-form-urlencoded');
//让text=JSON.stringify(表单)
let content=('content:Queue:tsi testdesk');
控制台日志(内容);
返回此.http.post('https://testdesk.ebi.ac.uk/REST/1.0/ticket/new?user=“+this.credentialsService.getUsername()+”&pass='+this.credentialsService.getPassword(),内容,{headers:headers})
//.map(response=>response.json())
.接住(这个.把手错误);
}

它给了我飞行前响应失败错误,但它与cURL和POSTMAN一起工作正常,而且我没有访问服务器端的权限。我正在通过API与它联系。

CORS是一项由web浏览器实施的策略。。最终,是否允许跨源请求取决于浏览器。在cURL或Postman的情况下,没有浏览器,没有当前主机,因此甚至没有跨源请求的概念。从技术上讲,Postman是一个Chrome扩展,但它与加载网页和发出跨来源请求完全不同


面向公众的API(可能与您试图访问的API类似)已经启用了CORS。可能的罪魁祸首是您自己的服务器。您必须在web服务器上启用CORS请求,以便允许您向外部API发出请求。

@georgeawg的回答在帖子中不被接受,也没有关于如何解决问题的足够解释浏览器阻止跨源帖子,以防止恶意网站在用户计算机上使用JavaScript发布恶意帖子。邪恶的网站可以自己发布,但不能跨来源发布。服务器必须授予浏览器允许跨源帖子的权限。服务器通过在带有CORS头的飞行前响应中指示权限来实现这一点。这些头文件需要在服务器端设置。如果您没有访问服务器的权限,则解决方案仅限于浏览器扩展或代理服务器。@georgeawg好的,我理解,但是curl或postman中的解决方案是如何工作的。我知道邮递员不受CORS策略的约束,但您可以在标题中添加原产地约束以使其绑定,我已经这样做了,并且它与itSee配合良好。我有一个spring后端,并在其上启用了hace CORS。由于一些业务逻辑问题,我试图通过前端发布帖子。但我并没有创建会话,这可能是一个原因,因为它说授权需要创建会话,而且如果我的帖子与上面提到的cURL相同的话