2014-12-29 1 views
0

Ajax을 사용하는 동안 CORS을 어떻게 활성화하면 다른 도메인에있는 원격 서버로 정보를 보낼 수 있는지 이해할 수 없습니다. Stackoverflow에 대한 많은 질문을 많이 읽었지만 무언가가 더해졌습니다. 브라우저의 보안 검사를 거치지 않고 코드에 Access-Control-Allow-Origin: * 헤더를 추가해야한다는 것을 알고 있습니다. 정확히 어디에서? 나는이 헤더를 PHP 파일의 간단한 태그로 추가하고 curls를 사용하여 POST 메시지를 작성하는 또 다른 옵션이 있음을 알고 있지만 JS와 함께 PHP를 능숙하게 사용하지는 못한다. 이 일이 어떻게 이루어져야하는지 누군가가 나를 이해하도록 도와 줄 수 있습니까? 중요한 것은 서버 설정을 구성하거나 변경할 수 없으므로 모든 것이 클라이언트 측에서 이루어져야한다는 것입니다.ajax 호출을 사용하여 CORS를 사용하는 방법을 이해할 수 없음

이것은 지금까지 제 코드입니다. 나는이 메시지를 Chrome 플러그인을 사용하여 관리 할 수 ​​있었지만 플러그인이 무엇을하고 있는지 재현 할 수 없기 때문에이 방법은 충분하지 않습니다.

$.ajax({ 
     type: "POST", 
     url: "someURL", 
     data: {name: "John", lastName : "Johnson", state : "NYC" }, 
     headers: { 
     "Access-Control-Allow-Origin: *" 
     } 
     }) 
     .done(function(msg) { 
     console.log(msg); 
}); 
+0

서버에서 변경할 수있는 권한 없음 = CORS 없음. ajax 요청을 게시하려면 원격 서버의 권한이 있어야합니다. – blex

답변

1

당신은이 작업을 수행 할 필요가 없습니다. 브라우저는 어떤 헤더가 필요한지 파악할만큼 똑똑합니다. 사실 그것은 요점입니다. 브라우저가 사이트 간 스크립팅 문제를 감지하고 계속 진행할 수 있는지 서버에 묻습니다.

헤더에 올바르게 응답하려면 서버 측 코드를 조정해야 할 수도 있습니다.

0

Access-Control-Allow-Origin응답 헤더입니다. 요청을 작성한 서버는 JavaScript를 사용하여 데이터를 읽을 수있는 권한을 부여해야합니다.

서버 설정을 구성하거나 변경할 수 없어 모든 것이 클라이언트 측에서 이루어져야합니다.

귀하의 자바 스크립트가 자체적으로 다른 사이트의 데이터를 읽을 수있는 권한을 부여 할 수 없습니다.

데이터를 가져 오기 위해 프록시를 사용해야합니다.

+0

답변 해 주셔서 감사합니다. 그렇다면 Chrome 플러그인은 내 코드에 원격 서버의 데이터를 읽거나 보낼 수있는 권한을 어떻게 부여 할 수 있습니까? 편집 - 플러그인은 프록시도 사용합니까? – undroid

+0

Chrome 확장 프로그램은 브라우저 소유자가 방문하는 웹 페이지에서 실행되는 일부 신뢰할 수없는 JavaScript가 아닙니다. 그것은 설치된 소프트웨어의 한 부분이며 브라우저가 설치된 다른 사이트에 액세스 할 수있는 권한을 요청해야하므로 동일한 출처 정책의 적용을받지 않습니다. – Quentin

관련 문제