繁体   English   中英

无服务器CORS预检请求失败-AWS API Stripe

[英]Serverless CORS preflight request failed - AWS API Stripe

我花了大约2周的时间来调试它,但是没有运气。

我已经使用创建收费的python创建了lambda函数。 这与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.

我的JavaScript代码是:

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
      }));
   }
 });

我已经在Amazon的API网关中设置了OPTIONS来响应并在Amazon API网关上启用了CORS。

在此处输入图片说明

在此处输入图片说明

如何传递飞行前请求并让lambda执行功能?

除了在API网关控制台上启用CORS之外,您的Lambda函数本身还必须返回这些CORS标头。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM