2017-04-23 1 views
0

Angularjs 앱은 API를 사용하여 서버에 연결하고 토큰 인증을 사용하고 있습니다. 포스트 만을 사용하여 토큰을 얻으면 완벽하게 작동하지만 Angulajs를 사용할 때 같은 헤더와 매개 변수와 나는 오류 : 400있어.Angularjs Access-Control-Allow-Origin

피들러를 사용하여 두 요청을 모두 확인했을 때 Angularjs의 요청에 Access-Control-Allow-Origin: * 헤더가 누락되었습니다.

해결 방법? 여기

토큰을 얻기 위해 사용하는 서비스입니다 :

AuthenticationApi.Login = function (loginData) { 
    //POST's Object 
    var data = "grant_type=password&username=" + loginData.userName + "&password=" + loginData.password; 

    var deferred = $q.defer(); 

    //the data will be sent the data as string not JSON object. 
    $http.post('http://localhost:53194/Token', data, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }) 
     .then(function (response) { 
      console.log(response); 
      localStorageService.set('authorizationData', 
       { 
        token: response.access_token, 
        userName: loginData.userName 
       }); 

      Authentication.isAuth = true; 
      Authentication.userName = loginData.userName; 
      console.log(Authentication); 
     deferred.resolve(response); 

    }, 
    function (err, status) { 
     logout(); 
     deferred.reject(err); 
    }); 

    return deferred.promise; 

}; 

은 API 서버, i'v 완료 CORS는 :

public void Configuration(IAppBuilder app) 
{ 
    ConfigureOAuth(app); 
    HttpConfiguration config = new HttpConfiguration(); 
    WebApiConfig.Register(config); 
    app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll); 
    app.UseWebApi(config); 
} 
+0

가능하게 고르 100 % 서버 쪽 문제를 사용할 수 있기 때문에

, 크롬을 사용하지 않는, IE 나 파이어 폭스를 사용하려고합니다. 이 태그에 각도 표시 만되어 있지만 서버 측 언어 나 서버 유형과 관련된 것은 아닙니다 – charlietfl

답변

3

내가 문제를 발견하고 나는 그것을 해결했습니다. 이 API 서버에서 , 나는이 코드를 가지고 : 문제는 PreflightMaxAge에, 난 그냥 주석

var cors = new EnableCorsAttribute("*", "*", "*"); 
     cors.PreflightMaxAge = 60; 
     config.EnableCors(cors); 

를 ... 그것은했다! 문제가 해결되지 않을 경우 그렇지 않은 CORS가