AngularJS에서 내 하위 도메인에 내 Restful API가 있지만 쿠키/세션이 도메인간에 공유되지 않는 문제가 있습니다. 각도를 들어 나는이 일을 오전 : 또한AngularJS withCredentials가 전송되지 않음
app.config(['$httpProvider',
function($httpProvider) {
$httpProvider.defaults.useXDomain = true;
$httpProvider.defaults.withCredentials = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
}]);
나는 $와 요청을하고 때 HTTP 내가
var object = {};
object.url = '/example'
object.withCredentials = true;
$http(object).success(object.success).error(object.error);
을하고 그리고 내 서버 측에서하고 내가 가진 : 이제
if($_SERVER['REQUEST_METHOD']=='OPTIONS') {
if(isset($_SERVER['HTTP_X_FOWARDED_HOST']) && !empty($_SERVER['HTTP_X_FOWARDED_HOST'])) {
$origin=$_SERVER['HTTP_X_FOWARDED_HOST'];
} else {
$origin=$_SERVER['HTTP_ORIGIN'];
}
if(isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']) && ($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']=='POST' || $_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']=='DELETE' || $_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']=='PUT')) {
header('Access-Control-Allow-Origin: '.$origin);
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Headers: *,X-Requested-With,Content-Type');
//header('Access-Control-Allow-Headers: Content-Type');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE, PUT');
// http://stackoverflow.com/a/7605119/578667
header('Access-Control-Max-Age: 86400');
}
}
서버에서 자격 증명을 허용하지만 옵션 요청에서 전송되지 않는다고 말합니다. 아래 스크린 샷.
내가 뭘 잘못하고 있니?
SSO 쿠키 할당이 설정되어 있습니다. 그래서 세션 ID 확인 전에 CORS 옵션 검사를 받아 해결했습니다. 옵션 인 경우 SSO에 대한 세션 ID 확인을 실행하지 않습니다. 그렇지 않으면 전송 된 쿠키를 사용하십시오. –