2014-11-20 4 views
1

테스트 서버에서 호스팅되는 웹 API 서비스에 CORS AJAX "GET"호출을 만들려고합니다. webAPI URL = HTTP : XXX : XXX : XXX : XXX/API/V1/작업프리 플라이트 OPTIONS가 성공한 후에도 AJAX CORS webAPI 요청이 실패합니다.

나는 (에서 WebAPIConfig.cs

AJAX 요청

var cors = new EnableCorsAttribute("*","*","*"); 
 
config.EnableCors(cors);
에서 다음 코드 줄을)

$.ajax({ 
 
     type: "GET", 
 
     datatype: "JSON", 
 
     url: http: xxx: xxx: xxx: xxx/api/v1/jobs, 
 
     contentType: "application/json"; 
 
     charset = utf - 8 ", 
 
      accept: 'application/json', 
 
      beforeSend: BH,    
 
      success: callback 
 
     }).done(function (data) { 
 
      var str = data.job_id + ': ' + data.job_name; 
 
      $('#responsevalue').text(str); 
 
     }).error(function (jqXHR, textStatus, errorThrown) { 
 
      $('#responsevalue').text(jqXHR.status + "::" + jqXHR.statusText + "::" + jqXHR.responseText); 
 
     });

로컬

OPTIONS http:xxx:xxx:xxx:xxx/api/v1/jobs HTTP/1.1 
 
Host: 50.17.211.226 
 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0 
 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
 
Accept-Language: en-US,en;q=0.5 
 
Accept-Encoding: gzip, deflate 
 
Origin: http://localhost:55346 
 
Access-Control-Request-Method: GET 
 
Access-Control-Request-Headers: requestdateutc,requestverificationtoken 
 
Connection: keep-alive

피들러 응답 헤더

: 피들러에서

, 나는 옵션은 전송되는과 함께 비행 전 요청 (200)

피들러 요청 헤더와 응답을 볼 수 있습니다

HTTP/1.1 200 OK 
 
Server: Microsoft-IIS/7.5 
 
Access-Control-Allow-Origin: * 
 
Access-Control-Allow-Methods: GET, POST, PUT, DELETE 
 
Access-Control-Allow-Headers: Content-Type, Accept 
 
Access-Control-Max-Age: 1728000 
 
X-Powered-By: ASP.NET 
 
Date: Thu, 20 Nov 2014 14:21:50 GMT 
 
Content-Length: 0

방화범, 나는 다음과 같은 세부 정보를 볼 수 있습니다 :

방화범 요청 헤더 :

OPTIONS http:xxx.xxx.xxx.xxx/api/v1/jobs HTTP/1.1 
 
Host: xxx.xxx.xxx.xxx 
 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0 
 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
 
Accept-Language: en-US,en;q=0.5 
 
Accept-Encoding: gzip, deflate 
 
Origin: http:localhost:55346 
 
Access-Control-Request-Method: GET 
 
Access-Control-Request-Headers: requestdateutc,requestverificationtoken 
 
Connection: keep-alive

방화범 응답 헤더를 :

HTTP/1.1 200 OK 
 
Server: Microsoft-IIS/7.5 
 
Access-Control-Allow-Origin: *, * 
 
Access-Control-Allow-Methods: GET, POST, PUT, DELETE 
 
Access-Control-Allow-Headers: Content-Type, Accept, Content-Type 
 
Access-Control-Max-Age: 1728000 
 
X-Powered-By: ASP.NET 
 
Date: Thu, 20 Nov 2014 18:08:36 GMT 
 
Content-Length: 0

여기 및 다른 곳에서 많은 설명서를 읽었습니다. 그것은 매우 간단하고 모두를 위해 작동합니다 (나를 제외하고).

마지막 참고 사항 : 테스트 서버 측면에있는 html 페이지로 API를 테스트 한 결과 정상적으로 작동했습니다. 동일한 도메인에있는 서비스와 웹 페이지를 모두 의미합니다. 추가 정보 : 브라우저 : Firefox, ASP.NET 4.5, 웹 API 2.2, VS2013 익스프레스

미리 감사드립니다. 어떤 도움을 주셔서 감사합니다.

답변

0

응답에 허용 된 헤더는 Content-Type, Accept, Content-Type이지만, 사용자는 requestdateutc,requestverificationtoken을 요청하고 있습니다. 헤더를 명시 적으로 허용하십시오.

관련 문제