2017-12-28 70 views
0

내 React-Redux 앱이 Axios를 통해 배포 된 Heroku API와 통신하려고합니다. 내가 Axios의를 통해 내 Heroku가 서버에 POST 요청을하려고하면내 React 앱에서 API 호출을 할 때 여전히 503 오류가 발생합니다.

나는 Chrome 개발자 도구에 내 콘솔에서이 오류 메시지가 :

enter image description here

당신이 screencap에서 볼 수 있듯이, 나는 "No 'Access-Control-Allow-Origin'헤더가 요청 된 리소스에 있습니다." 오류 상태 코드는 503입니다.

그리고 다소 이상한 점은 내 /register 요청이 두 번 발사된다는 것입니다. 그게 정상인가요? 여기

enter image description here

내 백엔드 코드에서 내 app.js 파일의 구성은 크로스 도메인 요청을 활성화하는 것입니다 : 여기

app.use(function (req, res, next) { 
    res.header("Access-Control-Allow-Origin", '*'); 
    res.header("Access-Control-Allow-Credentials", true); 
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,PATCH,OPTIONS'); 
    res.header("Access-Control-Allow-Headers", "Access-Control-Allow-Headers,Access-Control-Allow-Methods,Access-Control-Allow-Origin,Origin,X-Auth,X-Requested-With,Content-Type,Accept,content-type,application/json,x-auth,Access-Control-Request-Method,Access-Control-Request-Headers"); 
    next(); 
}); 

그리고에서 서버에 API 호출을 만드는 Axios의 코드가 내 프런트 엔드 :

import axios from 'axios' 

export function register(fields) { 

    console.log('below are the fields'); 

    console.log(fields); 


    return function action(dispatch) { 

     let objArrSkills = Object.keys(fields.form_skills); 

     let skillsArr = objArrSkills.map(function (value) { 

      if (fields.form_skills[value] === true && fields.form_skills[value] !== undefined) { 

       return value; 

      } 

     }); 

     let objArrArts = Object.keys(fields.form_arts); 

     let artsArr = objArrArts.map(function (value) { 

      if (fields.form_arts[value] === true && fields.form_arts[value] !== undefined) { 

       return value; 

      } 


     }); 

     console.log('artsArr is...' + artsArr); 

     console.log('skillsArs is...' + skillsArr); 


     const request = axios({ 

      method: 'post', 

      url: "https://jammr-backend.herokuapp.com/register", 

      data: { 

       firstName: fields.form_first_name, 

       lastName: fields.form_last_name, 

       email: fields.form_email, 

       password: fields.form_password, 

       skills: skillsArr, 

       iWantToMake: artsArr, 

       street: fields.form_address, 

       city: fields.form_city, 

       provinceState: fields.form_province, 

       gender: fields.form_gender, 

       imLookingFor: ['Acting', 'Drawing', 'Music', 'Writing', 'Programming', 'Videography'] 


      }, 

      headers: { 

       'Content-Type': 'application/x-www-form-urlencoded', 

       'Access-Control-Allow-Origin': '*', 

       'Access-Control-Allow-Headers': "Access-Control-Allow-Headers,Access-Control-Allow-Methods,Access-Control-Allow-Origin,Origin,X-Auth,X-Requested-With,Content-Type,Accept,content-type,application/json,x-auth,Access-Control-Request-Method,Access-Control-Request-Headers", 

       'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE,PATCH,OPTIONS' 

      } 


     }); 


     return request.then(response => { 

       console.log('axios call ran! Below is response....'); 

       console.log(response); 

       dispatch({ 

        type: 'REGISTER', 

        payload: { 

         myId: response.data, 

         fields: fields, 

         skills: skillsArr, 

         iWantToMake: artsArr 

        } 

       }) 


      }, 
      err => { 

       if (err) throw err; 

      }) 


    } 
}; 

내 코드에 문제가 있습니까? Github에 내 front-endback-end 코드가 있습니다.

관련성이있는 경우 백엔드가 Heroku에 배포됩니다. 또한, cors npm 패키지를 사용해 보았지만 작동하지 않았습니다.

답변

0

백엔드 문제로 인해 heroku 스택에서 503을 얻고 싶습니다. 아마도 시간 초과일까요? 분명히, Heroku 스택은 JS 콘솔에서 교차 원점 오류를보고있는 이유는 교차 원점 헤더를 추가하지 않을 것입니다. 서버 로그를 게시 할 수 있습니까?