2017-12-06 1 views
1

하나의 작은 프로젝트에서 작업하고 있습니다. 서버 측은 Python에서 RESTFul 서버로 인식했습니다. 프런트 엔드 Vue와 함께 해보겠습니다. 나는 Vue에서 새로운 사람입니다. 그리고 내가 데이터를 가져 오려고하면 오류 : 네트워크 오류이 발생합니다. 그리고 나는 실수를 발견 할 수 없다.vue에서 호출 축척이 네트워크 오류를 얻습니다.

아이러니하게도 브라우저에서 네트워크 -> 응답 탭에 가져온 데이터가 표시됩니다. HTML 페이지에는 없습니다. 페이지에서 나는 오류 : 네트워크 오류 만 볼 수 있습니다.

브라우저로 직접 URL을 통해 데이터를 가져올 수 있습니다. CURL로 데이터를 가져올 수 있습니다 또한 3 부 서비스에서이 Vue 코드로 데이터를 가져올 수 있습니다! 하지만 로컬 URL이 아닙니다.

플라스크 서버 코드

@app.route('/', methods=['GET']) 
def get_data_list(): 
    return 'Test' 

VUE 코드

var app = new Vue({ 
    el: '#app', 
    data: { 
     data_list: '...', 
     url_A: "#home", 
     url_B: '#page2', 
     url_C: '#settings' 
    }, 

    created: function() { 
     this.loadData() 
    }, 

    methods: 
     { 
      loadData: function() { 
       this.data_list = "Loading...." 
       var app = this 
       axios.get('http://127.0.0.1:5000/') 
        .then(function (response) { 
         app.data_list = response.data[0] 
        }) 
        .catch(function (error) { 
         app.data_list = "An error occurred. "+error+"/Error ststus: "+error.response 
        }) 
      } 
     } 
}) 

나는 조금 혼란 스러워요. 내 코드에 어떤 문제가 있습니까?

+0

는 콘솔 – samayo

+0

콘솔에서 네트워크 탭을 확인이 CORS 가이드와 플라스크 응용 프로그램을 구성하는 것은 깨끗합니다. 로컬 서버 로그 : 127.0.0.1 - - [06/Dec/2017 11:19:20] "GET/HTTP/1.1"200 - – Alex

+0

@samayo, 죄송합니다. "교차 원점 요청이 차단됨 : 동일한 원점 정책으로 원격 리소스를 http://127.0.0.1:5000/에서 읽을 수 없습니다 (이유 : CORS 헤더 'Access-Control-Allow-Origin'누락)."라는 메시지가 나타났습니다. – Alex

답변

0

당신은이 오류가 있는지 언급이 :

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at 127.0.0.1:5000. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).

이렇게하면 CORS (교차 리소스 공유)를 의미합니다. 즉, 두 개의 다른 도메인/포트에서 요청을 보내거나 수신하려고합니다.

그래서이 문제를 해결하는 한 가지 방법은 다음과 같습니다 당신이 localhost:5000localhost:8080에서 GET 요청을 보내는 경우 서로 다른 기원을 통해 자원을 공유하려고하기 때문에

그래서, 예를 들어, 당신은 같은 오류가 발생합니다 백엔드 서버 (127.0.0.1:5000)에게 (127.0.0.1:8080)의 GET 요청을 보낼 수있는 플라스크 앱을 실행한다고 가정합니다.

그래서, http://flask-cors.readthedocs.io/en/latest/

+0

많은 감사합니다! flask-CORS 문제를 해결했습니다. 그런데. 생산을 위해 flask-CORS를 삭제해야합니까? – Alex

+0

다릅니다. 'site1.com'이'site2.com'과 통신하도록 (예 : API 요청) 원한다면 CORS를 떠나야합니다. 대신에 모든 출처로부터 요청을받을 수 있도록해야합니다. 'ex : { "origins": "*"}})''site1.com'에서만 허용하도록 지시하십시오. CORS가 필요하다면 모두 가능합니다. 제작에 필요하지 않다면 제거하는 것이 더 좋습니다 – samayo

+1

수락되었습니다. 고맙습니다. 좋았 으면 좋겠다! – Alex

관련 문제