Может поражать API PayPal простой формой, но не элементом React Element (узел / коры) - PullRequest
0 голосов
/ 11 января 2019

Я вижу похожие темы, но ничего не решает эту конкретную проблему.

У меня Node PayPal API работает на экземпляре EC2. Он отлично работает, когда я нажимаю на него с простой формой с локального хоста:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>PayPal Node App</title>
  </head>
  <body>
    <h1>Blockchainit</h1>
    <h2>Buy for 3.33</h2>
    <form action="https://cloudhookstester.net/pay" method="post">
      <input type="submit" value="Buy" />
    </form>
  </body>
</html> 

Но выдает ошибку CORS (в консоли браузера), ссылающуюся на перенаправления PayPal, когда я использую элемент React:

class PayPalButton extends Component {
  state = {};
  handleOnClick() {
    axios.post("https://cloudhookstester.net/pay", (req, res) => {
      console.log("clicked");
    });
  }
  render() {
    return (
      <Button onClick={this.handleOnClick} bsStyle="info" bsSize="large" active>
        Pay With PayPal
      </Button>
    );
  }
}

export default PayPalButton;
На сервере включено

cors:

const cors = require('cors')
app.use(cors())

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content$
  next();
});

сообщение об ошибке:

Access to XMLHttpRequest at 'https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-6S482704WG553574G' (redirected from 'https://cloudhookstester.net/pay') from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Cross-Origin Read Blocking (CORB) blocked cross-origin response https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-6S482704WG553574G with MIME type text/html. See https://www.chromestatus.com/feature/5629709824032768 for more details.

Похоже, что ошибка исходит от PayPal, а не от моего сервера. Что странно, так это то, что ошибки не происходит, и все работает нормально, когда я использую форму вместо реагирующего элемента.

Так растерялся! Есть мысли?

1 Ответ

0 голосов
/ 11 января 2019

Я думаю, вам нужно настроить сервер , чтобы разрешить перекрестные запросы. Попробуйте это https://enable -cors.org / server_expressjs.html и посмотрите, сможете ли вы сделать запрос.

Надеюсь, это поможет!

...