2017-12-11 3 views
0

내 서버에 이용 응용 프로그램을 요청하려고합니다. 서버에서 cors를 사용하도록 설정했습니다. ionic serve에있을 때 - 랩 : 요청하면 작동하지 않습니다. GET 요청은 작동하지만 POST는 작동하지 않습니다.IONIC CORS 프리 플라이트가 유효하지 않습니다. HTTP

register(username: string, email: string, password: string) { 
    var header = new Headers(); 
    header.append("Accept", "application/json"); 
    header.append("Content-Type", "application/json"); 
    let options = new RequestOptions({ headers: header }); 

    var body = { 
     name: username, 
     email: email, 
     password: password 
    }; 

    var senderBody = JSON.stringify(body); 

    console.log(body, senderBody) 
    return new Promise((resolve, reject) => { 
     this.http.post("http://54.233.195.52:8080/user_parent", senderBody, options) 
     .map(res => res.json()) 
     .subscribe(data => { 
      resolve(data) 
     }, error => { 
      console.log(error) 
      reject(error) 
     }); 
    }); 
    } 

와 나는 같이 호출 :

register(){ 
    this.authPrvd.register(this.name,this.email,this.password) 
    .then(value => { 
     console.log(value); 
    }, reason =>{ 
     console.log(reason) 
    }) 
    } 

내가 좋아하는 결과로 JSON을 얻을 것으로 예상 :

{ 
    "id": 4, 
    "name": "naaame", 
    "email": "emaaail", 
    "password": "<encrypted password>", 
    "facebook_id": "", 
    "address_postal": "", 
    "address_street": "", 
    "address_number": 0, 
    "address_complement": "", 
    "cpf": "", 
    "rg": "", 
    "phone1": "", 
    "phone2": "", 
    "profile_image_url": "", 
    "extra_info": "", 
    "created_at": "2017-12-11T02:18:42.862478082Z", 
    "updated_at": "2017-12-11T02:18:42.862478082Z" 
} 

그리고 요청이 우편 배달부로 작업 않습니다. 하지만하는 크롬 확장 기능을 사용하여 시도

가 나던 작업 이온 역할 허용은-제어-원점 허용 : *

내 고르 서버에 구성되어 (이동에서 서버 (LANG))

func SetDBtoContext(db *gorm.DB) gin.HandlerFunc { 
    return func(c *gin.Context) { 
     c.Writer.Header().Set("Access-Control-Allow-Origin", "*") 
     c.Writer.Header().Set("Access-Control-Allow-Headers", "Accept, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, Origin") 
     c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE") 

     c.Set("DB", db) 
     c.Next() 
    } 
} 

콘솔이주는 오류는

옵션입니다 http://54.233.195.52:8080/user_parent 404 (찾을 수 없음) 01로드 실패:

enter image description here

편집 : 프리 플라이트 에 대한 응답은 내가 얻을 콘솔 점검 유효하지 않은 HTTP 상태 코드 (404)

가 어떤 이유로 urlencode되고 일을하지만, JSON은

을하지 않습니다

답변

0

다른 URL에서 데이터를 가져 오는 경우에만 발생합니다. 보안상의 이유로 소스를 차단하고 있습니다. 이 문제를 해결하는 데 도움이되는 많은 확장 프로그램이 있습니다. 크롬의 경우 these이 도움이 될 수있는 일부 확장 프로그램입니다. 도움이 되었으면 좋겠다

+0

안녕하세요, 조언을 주셔서 감사합니다, 불행히도, urlencoded 함께 작동하지 않았다 ... – Garcia

0

그래서 나는 이런 종류의 문제가있는 사람에게 무슨 일이 일어 났는지 알았다. 헤더 메서드에 allowheaders 메서드가있는 OPTION 메서드의 요청에 대한 응답을 만들어야했습니다. 추출이

v1.OPTIONS("/users", OptionsUser)  // POST 
v1.OPTIONS("https://stackoverflow.com/users/:id", OptionsUser) // PUT, DELETE 



func OptionsUser(c *gin.Context) { 
    c.Writer.Header().Set("Access-Control-Allow-Methods", "DELETE,POST, PUT") 
    c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type") 
    c.Next() 
} 

식으로 뭔가 : https://medium.com/@etiennerouzeaud/how-to-create-a-basic-restful-api-in-go-c8e032ba3181

것입니다 : 각도 및 이온 HTTP 기본 방법은 POST를 보내기 전에 유형 옵션의 프리 플라이트를 만들 수 있습니다. 난 그냥 그것을 처리했다 ...

관련 문제