저는 Ember Simple Auth 플러그인과 jQuery를 사용하여 ajax를 사용하여 Authorization
헤더 크로스 도메인을 보냅니다. Authorization
헤더가 설정되어있는 경우 :HTTP 헤더 설정 권한 부여 헤더가 데이터로드를 중지합니다.
jqXHR.setRequestHeader('Authorization', 'Bearer ' + session.get('authToken'));
그럼 내가 다음 헤더 다시 돌아가 REST URL로 비행 전 OPTIONS
요청 얻을 : 크롬 네트워크 모니터에서
$headers->set('Access-Control-Allow-Origin', 'http://subdomain2.domain.com');
$headers->set('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
$headers->set('Access-Control-Allow-Headers', 'Content-Type, Authorization, Accept');
$headers->set('Access-Control-Max-Age', 10);
$headers->set('Content-Length', 0);
을,이 OPTIONS
요청이 성공적으로 반환됩니다. GET 요청은 비행 전 OPTIONS
요청 이후에 올 때 다음, GET
요청은 중단 또는 적어도 네트워크 모니터에서 (pending)
말한다 :
내가 페이지를 새로 고치면 몇 초 후에 페이지 것 보여 주지만, OPTIONS
전화 바로 다음에 표시되지는 않습니다.
Access-Control-Max-Age
헤더로 재생하고 캐시 시간을 늘리면 OPTIONS
호출을 다시 보내기 전에 여러 번 새로 고침 할 수 있습니다. 즉, 페이지가 잘 표시됩니다. 전화가 걸려 오면 즉시 즉시 GET
이 온다.
브라우저에서 직접 URL을로드하면 JSON 데이터가 잘 표시됩니다. Chrome 확장 우편 게시자를 사용하여 수동으로 Authorization
헤더를 jQuery 요청과 동일하게 설정하더라도 Postman이 교차 도메인 요청을 시뮬레이트하지는 않지만 데이터를 올바르게로드합니다.
GET
요청이 보류 중이고 오류 또는 헤더를 반환하지 않는 이유는 무엇입니까?
내가 새로 고침 경우가 작동하는 것 같다 때문에 이상한, 그래서 나는'OPTIONS' 요청 후 올바른 헤더를 반환 할. 'SimpleAuth' 코드를 변경하지 않았습니다 -'if (! jqXHR.crossDomain &&! Ember.isEmpty (session.get ('authToken'))) {'하지만'jqXHR' 객체는 'crossDomain' 속성을 포함하고 있습니다 ... 실제로 크로스 도메인 속성이'options' 객체에 있음을 발견했습니다.시스템의 버그 또는 차이점이 있습니까? 나는 일시적으로 'REST' 서버를 같은 도메인으로 변경하여 상황을 해결했습니다. 나는 이것이 SimpleAuth 이슈라고 생각하지 않는다. 아마도 버그 일 것이다. 확실하지 않다. – Wasim
'Authorization' 헤더를 보내기 전에'jqXHR.withCredentials = true; '를 추가하려고 시도했지만 문제가 해결되지 않습니다. – Wasim