개발 Q&A

제목 ajax 크로스도메인 시 문제 발생
카테고리 PHP
글쓴이 손씨가문 작성시각 2017/03/30 11:29:05
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 12732   RSS

현재 자바스크립트 내용입니다. 문제는 Cross-Allow-Domail No Access 문제가 발생하고 있습니다.

그래서 내용을 찾아보고 해결을 하는데, 잘 안되네요

var obj = new Object();

obj.media = media;            

obj.rewardkey = rewardkey;            

obj.CMD = cmd;            

obj.TOKEN = token;            

var json_data = JSON.stringify(obj);                        

$.ajax({                

      url : "다른도메인",

     type: 'POST',

    crossDomain: true,                

    dataType : 'json',                

   data: json_data,                                

    success:function(msg){                    

      alert(msg);              

    },              

     error:function(request,error){    

        alert("message:"+request.responseText);                }            }); // end ajax

 

php부분입니다. 여러 방법으로 진행중입니다. 

1.

<?php

header('Access-Control-Allow-Origin: *');header("Access-Control-Allow-Methods: GET, OPTIONS");

class Main extends CI_Controller {

}

2.

    public function test($irl=null)  

   {        header('Content-type: application/json');       /header('Access-Control-Allow-Origin: *');

        $config = $this->set_config;        $config['irl'] = $irl;        $config['category'] = 'tmoney';        $config['check_cors'] = TRUE;

        $this->load->view('header' , $config);        $this->load->view('main');            $this->load->view('footer');    }

  }

3. 

    public function __construct()    {        parent::__construct();        $this->output->set_header('Access-Control-Allow-Origin: *');        $this->load->database();        $this->home_path = $_SERVER['DOCUMENT_ROOT'];                $this->set_config = array(            'path1' => null,            'path2' => null,            'slider' => 'on'        );    }

 

이렇게 검색하고 검색하다보니 총 3개 의 방법으로 값을 넣고 진행해보았는데도, 저 문제가 해결이 안되네요...2번 방법의 경우에는 페이지 넘어갈때 header를 추가한 방법입니다. 셋다 controller main.php에서 처리가 되고 있습니다.

문제가 무엇일까요 ㅠㅠ

 

 다음글 ci의 base_url함수 처럼 php자체에서도 bas... (1)
 이전글 네이버 블로그 오픈그래프 엑박 문의 드립니다 (5)

댓글

변종원(웅파) / 2017/03/30 11:35:45 / 추천 0
datatype : jsonp 로 하시고 post 가 아닌 get으로 처리하시면 크로스도메인에서 ajax통신할 수 있습니다.
손씨가문 / 2017/03/30 12:56:33 / 추천 0

POST 방식으로는 힘든가요?

var urlp = 'http://210.216.95.108:8090/mktp/api/adhub/ad.api?rewardkey='+rewardkey+'&token='+token;

            $.ajax({
                url : urlp,
                type: 'GET',
                crossDomain: true,
                dataType : 'jsonp',
                data: json_data,                
                success:function(msg){
                    alert(msg);
                },
                error:function(request,error){
                    alert("message:"+request.responseText);
                }
            }); // end ajax

 

정확히 url은 저거입니다. GET에 JSONP로 보내니, 해당 값이 error로 넘어가네요 undefined로요

 

해당 에러 내용으로는 이렇게 옵니다.

 

210.216.95.108:8090/mktp/api/adhub/ad.api?rewardkey=37937055&token=7111EB7C…190CF19D20FFD21126FD73CCF0E838A2CE13252CEEA4303A3F19%22}&_=1490848009105:1 Uncaught SyntaxError: Unexpected token :
ad.api?rewardkey=37937055&token=7111EB7CD204190CF19D20FFD21126FD73CCF0E838A2CE13252CEEA4303A3F19&ca…:1 Uncaught SyntaxError: Unexpected token :

 

token값에 syntaxError가 발생하네요. 이 문제는 무엇일까요...ㅠ

변종원(웅파) / 2017/03/30 13:08:02 / 추천 1

그건 통신이랑 상관없는 서버 에러입니다. 서버 프로그램을 보세요.

통신은 성공한겁니다.

kaido / 2017/03/30 13:38:06 / 추천 0

3가지 방법이 있습니다.

 

1. jsonp 사용

2. curl 사용 

3. 해당 사이트에 크로스 도메인 사용가능하게 서버 환경 설정하기 [난이도 어려움]

 

찾아보시면 전부 방법이 나와있습니다.

이문제는 ajax 오류가 아닙니다.

손씨가문 / 2017/03/30 13:47:41 / 추천 0
넵 감사합니다. 다시 해보다가 추가 문제가 발생하면 질문 드리겠습니다 감사합니다!