REST 기반 상호 도메인 요청을 시도하고 있습니다. 두 도메인 모두 동일한 서버에서 호스팅됩니다.PHP에서 CORS 오류를주는 사용자 지정 헤더
domain1 : http://testdata.local - domain2에서 REST API를 요청하는 애플리케이션 용.
도메인 2 : http://api.testdata.local -
각 나머지 API 호출 도메인 2에 필요한 일부 사용자 지정 헤더가 DOMAIN1에서 REST API 호출을 처리합니다.
내가 아약스를 통해 domain2에 대한 API 요청을 요청하면 CORS 차단 오류가 발생합니다.
PHP 코드를 도메인 2에 샘플 API 요청에 대해 : domain1을에서
class mytest{
public function setOriginPolicy() {
if (isset($_SERVER['HTTP_ORIGIN']) && $_SERVER['HTTP_ORIGIN'] == 'http://testdata.local') {
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400'); // cache for 1 day
}
// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) {
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");
}
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) {
header("Access-Control-Allow-Headers:{$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
}
exit(0);
}
}
public function testrequest(){
$this->setOriginPolicy
$result['config_status'] = 1;
$result['config_msg'] = "request ok";
echo json_encode($result);
}
}
AJAX 전화 :
var url = "http://api.testdata.local/mytest/testrequest";
$.ajax({
type: 'GET',
url: url,
async: true,
crossDomain:true,
//jsonpCallback: 'jsonCallback',
contentType: "application/x-www-form-urlencoded",
headers:{"API_KEY":"andapikey","APP_VERSION":"1.0","CONFIG_VERSION":"1.0","AUTH_TOKEN": "4a6b1e610e81fa19c76a557049e9fa19"
},
/*beforeSend: function(xhr) {
xhr.setRequestHeader("API_KEY", "andapikey");
xhr.setRequestHeader("APP_VERSION", "1.0");
xhr.setRequestHeader("CONFIG_VERSION", "1.0");
xhr.setRequestHeader("AUTH_TOKEN", "4a6b1e610e81fa19c76a557049e9fa19");
},*/
success: function(json) {
console.log(json);
},
error: function(e) {
console.log(e.message);
}
});
아래 내가 노력하고 내 코드입니다 헤더를 비활성화하면 응답을 얻고 있습니다.
입니다. – robbmj