Kas wallet api 사용시 발생하는 cors 에러

KAS에서 제공하는 ‘글로벌 대납 RLP를 이용한 트랜잭션’ API를 사용 중에

CORS policy에 의해 에러가 발생하는 현상이 나타납니다.

Access-Control-Allow-Origin를 허용해주는 extension program을 사용해도 위와 같은 에러가 계속 발생합니다. 해결방안을 알려주시면 감사하겠습니다

const { 
  rawTransaction: senderRawTransaction 
} = await caver.klay.signTransaction(senderTxData)

const res = await axios({
  url: "https://wallet-api.klaytnapi.com/v2/tx/fd/rlp",
  method: "post",
  headers: {
    "x-chain-id": "1001",
    "Content-Type": "application/json",
  },
  auth: {
      username: "KAS ACCESSKEY ID",
      password: "SECRET ACCESSKEY",
      Authorization:"Basic AUTHORIZATION",
  },
  data: {
      rlp: senderRawTransaction,
      submit: true,
      feeRatio: 0
  },
  json: true
})

위 부분은 API를 이용하는 코드 부분입니다.

안녕하십니까.
GroundX 의 KAS 개발팀입니다.

현재 CORS 문제가 발생하는 것으로 보아 Web 개발에 KAS access key/secret key 를 직접 넣어 사용하시는거 같습니다.

현재 KAS 는 Web에서 바로 접근하는 방법을 제공하고 있지 않습니다.
그리고 Web 에서 Access key와 secret key를 이용하여 호출하는 경우에 외부에 노출이 될 가능성이 있기 때문에 권장하지 않는 방식입니다.
그 이유는 KAS Access key/ secret key 는 세션의 개념이 없기 때문에, 외부에 노출될 경우 어뷰징이 될수 있으며, 이로 인해 과금 또는 요청 제한이 발생할수 있습니다.

추가적인 문의가 있다면 언제든지 말씀주시길 바랍니다.

감사합니다.

1 Like

@_Luffy 저도 비슷한 문제입니다.
KAS Klaytn Node API 를 사용하려는데 동일한 cors 에러가 납니다.

웹에서 직접 요청이 안된다면
그러면 중간에 백엔드 서버가 하나 더 필요한건가요?

웹, 앱 <-> node.js 백엔드에서 caver.js 사용하여 요청 <-> KAS Klaytn Node API

이런식으로 해야되나요?

안녕하세요, 네 말씀하신 것처럼 백엔드에서 caver를 사용하여 KAS를 이용하시기를 권장드립니다.