2017-12-16 2 views
1

디버깅을 시도했지만 약 2 주가 소요되었습니다.서버가없는 CORS 프리 플라이트 요청이 실패했습니다. - AWS API 스트라이프

전하를 생성하는 파이썬을 사용하여 람다 함수를 만들었습니다. 이것은 Stripe Checkout의 간단한 스크립트로 잘 작동합니다. 그것은 그것을 호출하고 아무런 문제없이 응답을 반환합니다 (Python). 나는 사용자 정의 스트라이프 체크 아웃 코드를 사용하려고하면

try: 

    stripe.api_key = "*******PRIVATE KEY***********" 
    Tokenstring = event.get('body') 
    Stripe_List = Tokenstring.split('=') 
    Token = Stripe_List[1].split('&')[0] 
    Email = Stripe_List[-1] 
    Email = Email.replace('%40', '@') 
    charge = stripe.Charge.create(
    amount=100, 
    currency="gbp", 
    description="Example charge", 
    source=Token, 
    receipt_email=Email 
) 
    print('Full SUCCESSFUL Transaxn Info ==== {}'.format(event)) 
    return { 
     "statusCode": 302, 
     "headers": { 
      "Location": "https://example.com/#success" 
     } 
    } 

지금 <form action="https://XXXXXXX.execute-api.eu-central-1.amazonaws.com/beta" method="POST">

와 HTML 본문에서 매우 간단하게 호출, 내가 얻을 : Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

내 자바 스크립트 코드

is :

var handler = StripeCheckout.configure({ 
    key: '*****PRIVATE KEY*****', 
    image: 'logo.png', 
    locale: 'auto', 
    token: function(token) {  
     var xhr = new XMLHttpRequest(); 
     xhr.open("POST","https://XXXXXXX.execute-api.eu-central-1.amazonaws.com/beta", true); 
     xhr.setRequestHeader('Content-Type','application/json'); 
     xhr.setRequestHeader('Access-Control-Allow-Origin','*'); 
     xhr.onreadystatechange = handler; 
     xhr.send(JSON.stringify({ 
      body : token 
     })); 
    } 
}); 

아마존의 API 게이트웨이에서 OPTIONS를 사용하여 아마존 API 게이트웨이에서 CORS를 사용할 수있게했습니다. 나는 비행 전 요청을 전달하고 람다 함수를 실행 할 수있는 방법

enter image description here

enter image description here

?

+0

'xhr.setRequestHeader ('Access-Control-Allow-Origin', '*');는 분명히 속하지 않습니다. 그것은 요청 헤더가 아니라 응답 헤더입니다. 'Origin 'null'...'http : // localhost' 또는 웹 서버가 아닌 컴퓨터의 HTML 파일에서 웹 사이트를 테스트 할 수 있습니까? –

+0

localhost 및 https 도메인에서 실행중인 @ Michael-sqlbot을 모두 시도했는데 양쪽 모두에서 동일한 문제가 발생했습니다. /! –

+0

** 동일한 ** 오류가 있어서는 안되며 차이가있을 수 있습니다. https 도메인을 사용하여 표시되는 내용을 표시하고 요청 및 응답 헤더를 캡처하십시오. –

답변

0

API 게이트웨이 콘솔에서 CORS를 활성화하는 것 이외에도 람다 함수 자체가 CORS 헤더를 반환해야합니다.

return { 
    "statusCode": 302, 
    "headers": { 
     "Location": "https://example.com/#success", 
     "Access-Control-Allow-Origin": "*", 
    } 
} 
+0

이미 시도했지만 작동하지 않았습니다. /! –

관련 문제