2016-12-12 113 views
2

我想這個捲曲轉變爲角2 POST請求轉換捲曲到角2 HTTP 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); 
    } 

這是給我的飛行前應對失敗的錯誤,但它正常工作與捲曲以及郵差也是我沒有訪問到服務器端,我接觸它通過API

+0

@georgeawg答案不被接受在後沒有足夠的解釋如何解決問題 – user5843174

+0

瀏覽器阻止跨越原因的帖子,以防止邪惡的網站在用戶計算機上使用JavaScript做邪惡的帖子。邪惡的網站可以張貼到自己,但不能跨越原籍。服務器必須允許瀏覽器允許跨源文章。服務器通過使用CORS標頭指示飛行前響應中的許可來完成此操作。這些頭文件需要在服務器端進行設置。如果您無法訪問服務器,則解決方案僅限於瀏覽器擴展或代理服務器。 – georgeawg

+0

@georgeawg好吧,我明白,但比捲曲作品或郵遞員作品如何。我知道郵遞員不受CORS策略的限制,但是你可以在郵件頭中添加約束條件以使其綁定,並且我已經完成了該工作,並且它可以正常工作 – user5843174

回答

0

CORS是由網絡瀏覽器執行的策略。最終,它取決於瀏覽器,無論它是否允許跨域請求。在cURL或Postman的情況下,沒有瀏覽器,沒有當前的HOST,所以甚至沒有交叉源請求的概念。技術上來說,Postman是一個Chrome擴展,但與加載網頁和製作跨域請求完全不一樣。

面向公衆的API(可能類似於您試圖訪問的API)已經啓用了CORS。可能的罪魁禍首是你自己的服務器。您必須在您的Web服務器上啓用CORS請求,以便您可以向外部API發出請求。

+0

我有一個春天的後端和hace cors啓用它。儘管由於某些業務邏輯問題,我試圖通過前端進行POST。但我沒有創建會話可以這是一個理由,因爲它說授權需要會話創建 – user5843174

+0

而且如果我的帖子相當於上面提到的cURL – user5843174