2016-08-04 3 views
0

У меня есть простой код для отправки запроса на мой локальный сервер. Как это:Angular2 проблемы с отправкой запроса на отправку

login(event, username, password) { 
    event.preventDefault(); 
    let body = "grant_type=password&username=" + username + "&password=" + password; 
    this.http 
     .post(`${appSettings.API_ENDPOINT_DEV}Login`, body, {headers: contentHeaders}) 
     .subscribe(
     response => { 
      this.accessToken = response.json().access_token; 
      console.log(this.accessToken); 
      localStorage.setItem('access_token', this.accessToken); 
     }, 
     error => { 
      alert(error.text()); 
      console.log(error.text()); 
     } 
    ); 
    } 

Но я ловлю следующее исключение в хромовой консоли разработчика Google.

XMLHttpRequest не может загрузить http://localhost:1216/api/Login. Ответ для предполетного имеет недопустимый HTTP код статуса 400

Помоги мне пожалуйста решить эту проблему, так как с угловым 1.x все хорошо работает. Вход с Google Chrome консоли:

Request URL:http://localhost:1216/api/Login 
    Request Method:OPTIONS 
    Status Code:400 Bad Request 
    Remote Address:[::1]:1216 
    Access-Control-Allow-Origin:* 
    Cache-Control:no-cache 
    Content-Length:34 
    Content-Type:application/json;charset=UTF-8 
    Date:Thu, 04 Aug 2016 11:43:21 GMT 
    Expires:-1 
    Pragma:no-cache 
    Server:Microsoft-IIS/10.0 
    X-Powered-By:ASP.NET 
    X-SourceFiles:=?UTF-8?B?RDpcU291cmNlc1xHcmFwcHNcVUtfQnJhbmRQcm90ZWN0aW9uXFdlYkFQSVxhcGlcTG9naW4=?= 

UPD:

export const contentHeaders = new Headers(); 
contentHeaders.append('Content-Type', 'application/x-www-form-urlencoded'); 
contentHeaders.append('Access-Control-Allow-Origin', '*; *'); 
contentHeaders.append('Access-Control-Allow-Methods', 'POST'); 

UPD2 Вход с передовой REST клиент

Cache-Control: no-cache 
Pragma: no-cache 
Content-Type: application/json;charset=UTF-8 
Expires: -1 
Server: Microsoft-IIS/10.0 
Access-Control-Allow-Origin: *; * 
X-Sourcefiles: =?UTF-8?B?RDpcU291cmNlc1xHcmFwcHNcVUtfQnJhbmRQcm90ZWN0aW9uXFdlYkFQSVxhcGlcTG9naW4=?= 
X-Powered-By: ASP.NET 
Access-Control-Allow-Headers: Content-Type 
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS 
Date: Thu, 04 Aug 2016 11:59:19 GMT 
Content-Length: 316 
+0

Вам необходимо правильно настроить свой сервер http://stackoverflow.com/questions/10143093/origin-is-not-allowed-by-access-control -allow-origin –

+0

с угловым 1.x все хорошо работает. Плз снова прочитал мои вопросы. –

+0

Как определяется 'contentHeaders'? – kiswa

ответ

1

Вы, возможно, отсутствует еще один заголовок:

"Access-Control-Allow-Methods", "POST" 

Проверить CORS enabled but response for preflight has invalid HTTP status code 404 when POSTing JSON Подробности

Update: Может быть, больше, чем просто это. Проверьте этот ответ https://stackoverflow.com/a/37654548/1267942

+0

Нет, я проверяю весь свой код, все работает хорошо –

0

я нашел проблемы, которые я добавил некоторые конфигурации в Web.config:

<httpProtocol> 
      <customHeaders> 
       <add name="Access-Control-Allow-Origin" value="*" /> 
       <add name="Access-Control-Allow-Headers" value="Content-Type" /> 
       <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /> 
      </customHeaders> 
     </httpProtocol> 

И удалить app.UseCors (CorsOptions.AllowAll); из старт.чет. Класс. Большое спасибо всем народам за потраченное время на мою проблему;)

Смежные вопросы