Ardor API: Not able to use POST requests with Axios due to CORS issues

1

I am having issues with POST requests to the Ardor API. This code:

<!DOCTYPE html>
<html>
<head>
  <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  <script>
  function myFunction() {
      let nodeurl = "https://testardor.jelurida.com/nxt";
      const query = {
        recipient:'ARDOR-KZ3Y-4B97-6KF6-2V8WA',
        amountNQT:34,
        feeNQT:-1,
        deadline:15
      };
      axios.post(nodeurl, query)
      .then(function(response) {
        console.log(response.data);
        document.getElementById("demo").innerHTML = response.data;
      })
      .catch(function (error) {
        console.log(error.message);
      });
  }
  </script>
</head>

<body>

<h2>Preflight request to CORS enabled Ardor Node fails</h2>

<p id="demo">The result should appear here</p>
<button type="button" onclick="myFunction()">Try it</button>
</body>
</html>

fails during preflight. Chrome:

Failed to load http://localhost:26876/nxt: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:3000' is therefore not allowed access. The response had HTTP status code 403.

What I understand is that it is not me who needs to send the 'Access-Control-Allow-Origin' header but the Ardor/NXT node.

Likely its just me not getting it. There are options around, you can change the content type, is that possible with NXT API? Is that something anybody had to do?

Its just failing for POST, GET works fine.

Thanks for any pointers in the right direction.

Mal Nemark

Posted 2018-08-19T10:23:18.200

Reputation: 51

Question was closed 2018-08-27T19:35:57.933

4I'm voting to close this question as off-topic because This question should be asked on StackOverflow.Adam 2018-08-19T14:25:42.803

Answers

0

Ardor versions prior to 2.1.0e rejected the OPTIONS Http method. This method is now enabled so the problem should be fixed.

It appears that Axios uses an OPTIONS Http request to check if CORS is enabled and since it was forbidden the response was a 403 response.

lyaffe

Posted 2018-08-19T10:23:18.200

Reputation: 1 480

1So it wasn't me! I assumed a different javascript module would work and tried with Jquery - that worked - Issue solved, thxMal Nemark 2018-08-19T16:58:17.243