2015-02-02 3 views
0

안녕하세요, 저는 백엔드에 전화를 걸어 포스트 메서드를 호출하는 것과 같은 이상한 문제를 일으키려고합니다.

Remote Address:192.168.58.183:80 
Request URL:http://192.168.58.183/ESService/ESService.svc/CreateNewAccount 
Request Method:OPTIONS 
Status Code:405 Method Not Allowed 
Request Headersview source 
Accept:*/* 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:en-US,en;q=0.8,pl;q=0.6 
Access-Control-Request-Headers:accept, content-type 
Access-Control-Request-Method:POST 
Connection:keep-alive 
Host:192.168.58.183 
Origin:http://localhost:8100 
Referer:http://localhost:8100/ 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) >  AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 
Safari/537.36 
Response Headersview source 
Access-Control-Allow-Headers:Content-Type, Accept 
Access-Control-Allow-Methods:POST,GET,OPTIONS 
Access-Control-Allow-Origin:* 
Access-Control-Max-Age:1728000 
Allow:POST  
Content-Length:1565 
Content-Type:text/html; charset=UTF-8 
Date:Mon, 02 Feb 2015 09:11:17 GMT 
Server:Microsoft-IIS/7.5 
X-Powered-By:ASP.NET 

그리고 내 코드는 여기처럼 보인다 난이 호출이 누군가를 검토 할 수 있습니다 괜찮 생각하십니까?

$scope.RegisterUser = function(){ 
var us = { 
    UserName:$scope.userName, 
    Password:$scope.password, 
    UserRoleID:null, 
    Company:$scope.company, 
    Terms:$scope.terms, 
    ID:null, 
    BuyerID:app.buyerId 
}; 

$http({method:'POST', url:app.wcf + '/CreateNewAccount', data:{us:us}}) 
.then(
    function(resp){ 
    app.Logger(resp.data); 
    }, 
    function(err){ 
     app.Logger(err); 
})}; 

그래서 어쩌면 내가 뭔가를 잘못하고 있어요 아니면 HTTP에 옵션 설정을 통과해야합니까?

+0

어떻게 문제를 해결 했습니까? –

+0

나는 백엔드에서 허용한다고 생각한다. – vivid

답변

1

일반적으로 브라우저는 사이트의 JavaScript가 원본 교차 요청으로부터 데이터를 읽을 수 없도록합니다. 사이트가 사용자의 온라인 뱅킹, 회사 인트라넷 또는 기타 개인 사이트에서 정보를 얻도록 브라우저에 지시 할 수 있기 때문입니다. 이를 The Same Origin Policy이라고합니다.

CORS이라는 표준은 사이트가 다른 사이트에서 데이터를 읽을 수있는 권한을 부여 할 수 있도록 허용합니다.

POST 요청에 부작용이있을 수 있으므로 추가 보안 계층이 추가됩니다. 브라우저가 POST 요청을하기 전에 pre-flight OPTIONS request을 사용하여 POST 요청을 할 수있는 권한을 요청합니다.

서버가 OPTIONS 요청을 처리하도록 구성되어 있지 않으며 POST 요청에 대해 CORS 헤더를 반환하도록 구성되지 않았을 수 있습니다.

JavaScript가 다른 출처에서 요청할 수 있도록하려면 CORS 지원을 설정해야합니다.

0

이것은 비행 전 요청이며 CORS를 사용하도록 설정하는 데 사용됩니다. 걱정할 필요가 없습니다. 정상적인 것입니다.

+0

하지만 XMLHttpRequest를 얻는 것은 http://192.168.58.183/ESService/ESService.svc/CreateNewAccount를로드 할 수 없다. 잘못된 HTTP 상태 코드 405 – vivid

+0

API의 구성에 문제가있는 것 같습니다. –