2016-10-06 3 views
0

나는 클래스 수준에 다음과 같이 기인하는 컨트롤러를 포함하는 C#을 웹 API를 예 양식 localhost 잘. 각도 http.get + WebApi = 고르 실패

는 이제 AngularJS와 함께 시작하고 그리고 http.get-방법은 다음과 같은 메시지와 함께 실패합니다

은 XMLHttpRequest http://localhost:8081/DividendsManager.Web.Api/api/securities/GetSecurities?yearsDividendsDontDecrease=40를로드 할 수 없습니다. 'Access-Control-Allow-Origin'헤더가 요청 된 리소스에 없습니다. 따라서 원본 'null'은 액세스가 허용되지 않습니다.

이 내 AngularJS와 코드입니다,

<script> 
 
     var myApp = angular.module('myApp', []); 
 

 
     myApp.controller("myController", function($scope, $http) { 
 

 
      var onSuccess = function(data, status, headers, config) { 
 
       $scope.data = data; 
 
      }; 
 

 
      var onError = function(data, status, headers, config) { 
 
       $scope.error = status; 
 
      } 
 

 
      var promise = $http.get("http://localhost:8081/DividendsManager.Web.Api/api/securities/GetSecurities?yearsDividendsDontDecrease=40"); 
 

 
      promise.success(onSuccess); 
 
      promise.error(onError); 
 
     }); 
 
</script>
피들러에서

가, 내가 볼 수있는 AngularJS와-HTTP-받기 요청이있다의 헤더 "원산지 : 널 (null)"항목 이것은 문제와 관련이있는 것 같습니다. 내 생각에, "null"대신 값이 "http://localhost"이면 작동 할 것입니다.

아무도 도와 줄 수 있습니까?

감사합니다.

+0

포트가 다르므로 CORS 서버 측을 구현해야합니다. 브라우저와 관련해서는 다른 출처를 구성합니다. – charlietfl

답변

0

[EnableCors] 속성에서 headers: "", methods: ""headers: "*", methods: "*"으로 변경해야 할 수 있습니까?

또한 origins URL 끝에 슬래시를 포함하면 안됩니다.

+0

안녕하세요 kimbaudi, 감사합니다. 속성에서 나는 "*"가 아니라 ""를했습니다. 오타가 잘못 작성해서 죄송합니다. 또한 마지막에 슬래시를 사용하지 않았습니다 (http : // localhost /가 아니라 http : // localhost). 마찬가지로, 다른 아약스 호출 잘 작동합니다. AngularJS 문제 인 것 같습니다. – user2145393

+0

HTTP 헤더 응답을 게시 할 수 있습니까? 'Access-Control-Allow-Headers : Content-Type''액세스 제어 허용 메소드 : GET, POST, OPTIONS'와 같은 것을 얻고 있습니까?'Access-Control-Allow-Origin : *'? ApiController에서 허용 된 HTTP 메소드를 설정해야 할 수도 있습니다 :'public HttpResponseMessage Get() {...}' – kimbaudi

+0

안녕하세요, 감사합니다. 하지만 지금은 내 자신의 실수를 알고 있으며 다음 번에 작동합니다.) 자세한 내용은 내 대답을 참조하십시오. – user2145393

0

우리 프로젝트에서 같은 문제가 발생했으며 다양한 웹 사이트의 제안에 따라 많은 옵션을 시도했습니다. 하지만 우리가 일한/일하는 것은 here과 같이 커스텀 CORS 제공자를 작성하는 것입니다.

+0

안녕하세요 sam, html 헤더의 origin 특성이 null이기 때문에 문제가 클라이언트 측에 있다고 생각합니다. 서버를 거부하면 올바로 작동합니다. AngularJS보다 다른 아약스 기술을 사용하면 계획대로 작동합니다. – user2145393

0

Upppps!

오늘 신선한 공기로 달릴 때 나는 갑자기 오리진이 널인지 알았습니다. IIS에서 웹 사이트를 호출하지 않았기 때문에 파일 시스템에서 파일을 직접 열었습니다. 물론 이렇게 할 때 유효한 URL이 없었고 Origin은 웹 서버에 대해 null이었습니다.