2016-12-12 2 views
2

Я хочу, чтобы преобразовать этот Curl угловые 2 после запросаПреобразования Curl углового 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); 
    } 

Это дает мне предполетной ответ не в состоянии ошибки, но он отлично работает с Curl, а также POSTMAN , а также I Dont имеют доступ к стороне сервера Я связываюсь через API

+0

@georgeawg ответ не принимается в почте, и не существует достаточного количества объяснений о том, как решить проблему. – user5843174

+0

Браузеры блокируют перекрестные сообщения, чтобы предотвратить использование веб-сайтов злоумышленниками из-за использования JavaScript на компьютерах пользователей, чтобы делать злые посты. Злые сайты могут публиковать сами по себе, но не перекрестно. Серверы должны предоставить разрешение браузерам разрешать записи с перекрестным контуром. Сервер делает это, указывая разрешение в предполетных ответах с заголовками CORS. Эти заголовки должны быть настроены на стороне сервера. Если у вас нет доступа к серверу, решения ограничены расширениями браузера или прокси-серверами. – georgeawg

+0

@georgeawg ok Я понимаю это, но как работает один из завитушек или почтальон. Я знаю, что почтальон не ограничен политикой CORS, но вы можете поставить ограничение происхождения в заголовке, чтобы связать его, и я это сделал, и он отлично работает с ним. – user5843174

ответ

0

CORS является политика, которая обеспечивается веб-браузером . В конечном счете, это зависит от браузера, независимо от того, разрешит ли он запрос перекрестного происхождения. В случае cURL или Postman нет браузера, нет текущего HOST, поэтому нет даже понятия запроса на перекрестный поиск. Технически почтальон - это расширение Chrome, но это совсем не то же самое, что загрузить веб-страницу и делать запросы с кросс-началом.

API с открытым доступом (вероятно, аналогичный тому, который вы пытаетесь получить) уже имеет CORS. Вероятным виновником является ваш собственный сервер. Вы должны разрешить запросы CORS на своем веб-сервере, чтобы они могли запрашивать внешние API.

+0

У меня есть пружинный backend и hace cors, включенные на нем. Я пытаюсь сделать POST через интерфейс, хотя из-за некоторой проблемы бизнес-логики. Но я не создаю сеанс, это может быть причиной, поскольку он говорит, что нужно создать сеанс авторизации. – user5843174

+0

А также, если мой пост эквивалентен cURL, упомянутому выше – user5843174