2016-10-29 7 views
0

레일스에 jsonapi-resources 백엔드 API가 있습니다. 나는 파이썬 에서뿐만 아니라 curl을 사용하여 데이터를 요청할 수있다. 내가 브라우저에서 다음과 같은 오류가 요청에 대한 jQuery를 사용하려고하면레일스 API 백엔드에 'Access-Control-Allow-Origin'헤더가 없습니다.

:

XMLHttpRequest의은 https://shop-api-3.herokuapp.com/customers?filter%5Bshop_token%5D=9e3c9769b752436ddbd27597cf946a36를로드 할 수 없습니다. 프리 플라이트 요청에 대한 응답이 액세스 제어 검사를 통과하지 못합니다. 아니요 요청한 리소스에 'Access-Control-Allow-Origin'헤더가 있습니다. 따라서 원본 'null'은 액세스가 허용되지 않습니다.

config.action_dispatch.default_headers = { 
     'Access-Control-Allow-Headers' => 'Origin, X-Requested-With, Content-Type, Accept, Authorization', 
     'Access-Control-Allow-Origin' => '*', 
     'Access-Control-Request-Method' => '*', 
     'X-Frame-Options' => 'ALLOWALL' 
    } 

는 그러나, 나는 여전히 같은 오류를 받고 있어요 : 응답 는

(404)는 그래서 config/environments/production.rb이 추가 HTTP 상태 코드를했다. 내가 뭘 놓치고 있니? ,

curl -i -H "Accept: application/vnd.api+json" "https://app.herokuapp.com/retentions?filter%5Bshop_token% 

5D = ABC123 "

사용 레일

답변

-1

4 내가 한 달 전에이 같은 문제가 있었다 및 블로그 게시물을 많이 읽은 후 :

FWIW이 내 curl 명령입니다 내가 해결 ...

그래서 당신이 그것을하는 대신 jquery (브라우저에서)를 사용하여 다른 서버에서 api 토큰을 요청하는 것처럼 보입니다, 그것을 요청 fr을 톰 서버와 온스 당신은 그것을 클라이언트에게 전달한 다음 원하는대로 할 수 있습니다, 이것은 트릭을해야합니다.

이 CORS에 대한 나의 이해는 브라우저에서 서버로 이동할 수 없다는 것을 의미합니다. 서버 (도메인)에서 서버 (액세스중인 API)로해야합니다.

희망이 도움이됩니다.