Запрос POST с паролем TOTP: ответ на предполетный запрос не проходит проверку контроля доступа - PullRequest
0 голосов
/ 05 мая 2020

Мне нужно сделать POST-запрос с данными на URL , используя TOTP (Time-based One-Time Password). Я все время получаю следующее сообщение с сервера.

============================================== ============

Доступ к XMLHttpRequest по адресу URL из источника 'http://localhost: 3000 ' заблокирован политикой CORS : Ответ на предварительный запрос не проходит проверку контроля доступа: заголовок 'Access-Control-Allow-Origin' имеет значение 'https://topic.name.com', которое не равно указанному источнику.

=============================================== =========

Я использую otplib в качестве библиотеки, чтобы помочь мне сгенерировать TOTP.

  1. Настройка для TOTP - интервал 30 секунд (по умолчанию)
  2. T0 - 0 (эпоха)
  3. Di git - 10
  4. HMA C -SHA-512 алгоритм

Требования к заголовку (указывается сервером ):

  1. HTTP Basi c Аутентификация, как указано в главе 2 RFC2617
  2. Content-Type: 'application / json'

Ниже приведен мой код.

import { totp } from 'otplib'
import base64 from 'base-64'
import axios from 'axios'

const request = () => {
    const URL = 'https://api.topic.name.com/topic/003'

    const info = {
        "github_url": "https://github.com/myname/topic",
        "contact_email": "myemail@hotmail.com"
    }

    const secret = 'nameTopic'
    const dataBody = JSON.stringify(info)
    const sharedSecret = info.contact_email+secret 

    totp.options = { digits: 10, algorithm: "sha512", epoch: 0}

    const newTOTP = totp.generate(sharedSecret);
    const isValid = totp.check(newTOTP, sharedSecret);

    console.log(newTOTP, isValid)

    const userPass = info.contact_email + ":" + newTOTP;
    const credential = base64.encode(userPass);

    const config = {
    headers: {
        'Content-Type': 'application/json',
        "Authorization": "Basic " + credential
        }
    };

    axios.post(URL, dataBody, config).then((response) => {
        console.log(response)
    }, (err) => {
        console.log(err)
    })
}

export default request

Я действительно не понимаю, почему возникла проблема с CORS, может это быть что мои заголовки неправильные?

Любая помощь приветствуется, спасибо за ваше время.

1 Ответ

0 голосов
/ 08 мая 2020

Вы должны попробовать запустить его на узле. Поместите свой скрипт в файл index. js, установите зависимости и запустите node index.js

Удалось ли вам решить задачу? Я продолжаю получать Access denied: Invalid token, wrong code даже после того же кода.

...