2017-04-24 2 views
0

내 ionic2 응용 프로그램에서 내 ASP API에서 무기명 토큰을 검색하려고합니다. 아래 그림과 같이이온 2 ASP APi 토큰 요청

것은 내가 API에 CORS를 활성화 :

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

이것은 사용자를 등록하기 위해 내 API 내 이온 2 응용 프로그램에서 POST 요청을 형성하기 위해 나를 수 있었다. 이것은 훌륭하게 작동합니다. 나는이 사용 요청은 다음과 같습니다

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8100' is therefore not allowed access. 

I가 사용하고 요청 :

let headers = new Headers({ 
    'Content-Type': 'application/json' 
    }); 


    let options = new RequestOptions({ 
    headers: headers 
    }); 

    let body = JSON.stringify({ 
    Email: credentials.email, 
    Password: credentials.password, 
    ConfirmPassword: credentials.confirmPassword 
    });  

    return this.http.post('http://localhost:34417/api/Account/Register', body, options) 

그러나 나는 다음과 같은 오류를받을 내 API에서 토큰을 검색하려고 할 때 시도하고 다음과 같이 토큰은 검색 :

let body = "grant_type=password" + "&userName=" + credentials.email + "&password=" + credentials.password; 
let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' }); 
let options = new RequestOptions({ headers: headers });  
return this.http.post('http://localhost:34417/token', body, options) 

이이 오류, 내 API 잘 작동 다른 모든 요청을 던지고있는 유일한 요청입니다.

내가 놓친 것이 있습니까? 아니면 제가 잘못하고있는 것이 있습니까? 당신이 *Access-Control-Allow-Origin을 설정하는 것처럼

+0

액세스 원점을 *로 설정 하시겠습니까? –

+0

@suraj API를 언급 한 다음 예, EnableCorsAttribute의 첫 번째 별표가이 작업을 수행합니다. –

답변

0

var cors = new EnableCorsAttribute("*", "*", "*");

보인다.

체크 MDN CORS Requests with credentials.

Credentialed requests and wildcards

When responding to a credentialed request, the server must specify an origin in the value of the Access-Control-Allow-Origin header, instead of specifying the "*" wildcard.

자격 증명을 사용하려면 특정 URL을 설정해야합니다. 또는 이오니아 2에만 사용하려는 경우 setting a proxy으로 코어 문제를 피할 수 있습니다. official blog에 따르면

:

The proxies settings contain two things: the path you use to access them on your local Ionic server, and the proxyUrl you’d ultimately like to reach from the API call.

{ 
    "name": "ionic-2-app", 
    "app_id": "my_id", 
    "proxies": [ 
    { 
     "path": "/api", 
     "proxyUrl": "http://localhost:34417/api" 
    } 
    ] 
} 

이온은 localhost:8100에 서버를 시작합니다 기본적으로 명령을 제공합니다. 설정된 프록시가 http://localhost:34417/api에 도달합니다.

요청의 경로는 실제 서버 대신 localhost:8100/api입니다.

+0

나는이 API를 내 ionic 2 응용 프로그램에서 사용하려고 의도하고 있지만 응용 프로그램에서 프록시를 설정하려고했지만 "Path"와 "ProxyUrl"에 정확하게 추가해야하는 것이 잘못되었다는 두려움이 있습니까? 대부분의 예제는 질문을하는 사람에게 매우 구체적이며 두 사람이 정확히 무엇을 언급하고 있는지 언급하지 않습니다 –

+0

ASP API에서 토큰을 검색하는 호출이 URL/api/token. url/api/etc/etc의 스톨은 예상대로 작동하지만, 오류를 던지는 URL/토큰에 대해서만 호출합니다. –

+0

proxyUrl을'http : // localhost : 34417'로 설정하면 어떻게됩니까? 당신의 req url은 이것에 대한'localhost : 8100/api/token'과 나머지는'localhost : 8100/api/api/.. '가 될 것입니다. –