2013-06-26 6 views
0

로컬 서버가 있습니다 : 127.0.0.1:8000 및 웹 사이트 : 127.0.0.1:9000 모두 play2 프레임 워크로 실행 중입니다.랜덤 액세스 제어 허용 원점

json 데이터를 가져오고 이러한 데이터가있는 그래픽을로드하기 위해 서버에서 여러 jquery ajax 요청을 만듭니다.

전체적으로 무작위 적으로 액세스 제어 허용 원점 오류가 발생하는 문제가 있습니다. I는 Access-Control-Allow-Origin에 대해 많이 읽고, 서버의 헤더 응답이 방법 수정 : 나는 10 아약스 전화를했습니다

$.ajax({ 
     url: obj.url, 
     dataType: 'json', 
     crossDomain:true, 
     success: function (data){ 
      // load graph 
     } 

: 내 아약스 호출이 방법을 만들어

Response.ok(Engine.executeQuery(identifier, queryParameters)) 
       .header("Access-Control-Allow-Origin", "*") 
       .header("Access-Control-Allow-Methods","GET, POST, OPTIONS") 
       .header("Access-Control-Allow-Credentials","true") 
       .header("Access-Control-Allow-Headers","Content-Type, *") 
       .build(); 

을 , 모두 같은 대상 URL에서 정확히 같은 방식으로 만들었습니다.

문제는 페이지를로드 할 때 (그리고 ajax 호출을 실행할 때) 일부 아약스 호출은 작동하고 일부 호출은 수행하지 않는다는 것입니다. 페이지를 새로 고치면 다른 수의 전화가 작동합니다. 이 표정이 나에게 무작위로 보인다.

또한 ajax 호출에 async : false를 지정하면 오류가 발생하지 않는다는 사실에 주목했습니다. 물론 비동기 호출이 필요합니다 (너무 쉬울 것입니다).

나는이 오류에 관해 많은 게시물을 보았는데 나는 그것에 대해 모든 것을 알고 있다고 생각했다.

어떤 도움을 환영합니다. 미리 감사드립니다.

+0

개발자 탭을 열고 네트워크 탭에서 모든 ajax url의 헤더에 cors 헤더가 있는지 확인합니다. 그렇지 않다면 클라이언트에없는 서버에서 문제가 발생합니다. –

+0

방금 ​​확인했는데, Accept : \ */\ *는 괜찮은 것입니까? 그래서 서버쪽에 문제가 있습니까? – EoiFirst

+0

"Access-Control-Allow-Origin"헤더가 있어야하며, "Accept"헤더는 다른 용도로 사용됩니다. 모든 요청에 ​​원본 헤더 허용이 설정되어 있지 않아서 오류가 발생했는지 서버 측에서 확인하십시오 –

답변

1

문제가 해결되었습니다. 나는 서버를 리팩터링했고 훌륭하게 작동한다. 스레드 문제 였고 안전하지 않은 것으로 보입니다.

도움 주셔서 감사합니다.

관련 문제