2017-03-21 6 views
2

Firebase에서 호스팅되는 Ionic2 앱을 보유하고 있습니다.Firebase에서 webapp로 CORS 헤더없이 외부 데이터를 가져 오는 방법은 무엇입니까?

없음 '액세스 제어 - 허용 - 원산지'헤더가 요청 자원에 존재이고 내가 필요한 것은

내가 의해 로컬로 해결 할 수있는 API 서비스에서 외부 데이터를 얻을 수 있습니다

"proxies": [ 
{ 
"path":"/api", 
"proxyUrl": "https://api.somwhere.com/" 
} 
] 

을하지만 중포 기지 내 응용 프로그램을 배포 한 후이 처리하는 방법을 아무 생각이 : ionic.config.json 파일에서 프록시를 사용하여. 어떻게 든 가능합니까?

+2

Firebase에 익숙하지 않지만 기본적으로 CORS는 브라우저 구현의 ajax 요청 제한에 대한 해결책입니다. 따라서 유일한 대안은 프록시를 통해 도메인 간 요청을 피하는 것입니다 (또는 서버가 요청을 대신 처리하는 것은 기본적으로 같은 유형의 대안입니다). Firebase에서 허용하는 프록 싱 옵션에 대해 조사해야합니다. – snorkpete

+0

행운이 해결 이니? API 서비스가 호스팅되는 곳에서 변경해야한다는 생각이 들지만 액세스하거나 변경할 수없는 경우에는 어떻게해야합니까? –

+0

행운을 빈다, 나는 https://cors-anywhere.herokuapp.com/을 지금 사용한다. – johnerfx

답변

1

이것은 아마도 firebase 관련 문제가 아닙니다. 귀하의 API는 헤더에 CORS를 전송해야합니다. 모두 허용 (*)하거나 특정 firebase 호스팅 앱. API에 대한 쉽게 고쳐 글꼴 파일의 출처 간 요청을 허용하도록 firebase.json에 .NET 참조 링크에서 Firebase docs have an example of setting the Access-Control-Allow-Originhttps://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api

1

을 썼다. 다음과 같이 조정할 수 있습니다.

"headers": [ { 
    "source" : "**", 
    "headers" : [ { 
    "key" : "Access-Control-Allow-Origin", 
    "value" : "*" 
    } ] 
} 

이렇게하면 모든 자원에 대한 출처 요청이 허용됩니다. 물론 특정 리소스로 제한하려는 경우 source 값을 조정할 수 있습니다.

+0

이 작업을 수행하려면 캐시가 만료되도록해야합니까? 이것은 내 firebase.json이고 난 여전히 CORS 오류가 발생합니다. { \t "호스팅": { \t \t "공공": "./src/empty" \t \t "헤더": [{ \t \t \t "소스": "**", \t \t \t "헤더": [{ \t \t \t "키": "액세스 제어 - 허용 - 기원", \t \t \t "값": "*" \t \t,}] \t \t}] \t} } – Xerri

+0

주 그 CORS 오류 ("원점에서 '에 http : // localhost를 : 8100'CORS 정책에 의해 차단되었습니다 없음 '액세스 제어 - 허용 - 원산지'헤더 가 요청한 리소스에 있습니다. ") 호스팅 된 폴더가 아닌 firebase 스토리지에 액세스하고 이미지를 차단하려고 시도하는 중입니다. – Xerri

+0

캐시가 만료 될 때까지 기다려야합니다. 그 또는 가능하면 브라우저가 자원을 강제로 (다시)로드하도록하십시오. 하지만 중간 네트워크 캐시/프록시를 사용하는 데 반드시 필요한 것은 아닙니다 – sideshowbarker