Я пытаюсь отправить запросы на внешний API, но политика CORS блокирует меня. Есть идеи? - PullRequest
0 голосов
/ 25 июня 2019

Попытка отправки приводит к внешнему API.вот мой пост-запрос:

Вот мой код ошибки в консоли:
Доступ к XMLHttpRequest в 'https://www.trackbox.guru/forms/' from origin' http://localhost:3000' заблокирован CORSpolicy: в запрошенном ресурсе отсутствует заголовок 'Access-Control-Allow-Origin'.

code =  RestClient.post('https://platform.esh.ltd/user/login', {
                  headers: {
                   'x-trackbox-username' => 'pass',
                   'x-trackbox-password' => 'user',
                   'x-api-key' => 'xx',
                   'Access-Control-Allow-Origin' => '*',
                   'Access-Control-Allow-Headers' => "*",
                   'Access-Control-Allow-Credentials'=> 'true'
                    },
                 body: {
                  'ai' => "xx",
                  'ci' => "660",
                  'gi' => "25",
                  'userip' => request.remote_ip,
                  'firstname' => reader_params[:first_name],
                  'lastname' => reader_params[:last_name],
                  'email' => reader_params[:email],
                  'password' => reader_params[:password],
                  'phone' => reader_params[:phone_number],
                  'prefix' => reader_params[:phone_code]
                  }
                })
  puts code
  puts ('here')
  redirect_to redirect_url

У меня также есть тег script в моем заголовке, который позволяет API собирать больше данных:

 <script>gvars={'gi': 25, 'ci': 656, 'wl': 17, 'rd': 4, 'ap': 0, 
'ae': 0, 'lg': 'en', 'ai':xx};</script> <script 
src='https://cdn.trackbox.guru/trackbot.js?v=4.64'></script>
<div id='gaff'></div>

1 Ответ

1 голос
/ 25 июня 2019

Таким образом, подпись для post выглядит как RestClient.post(url, payload, headers={}) README , поэтому переместите заголовки за пределы внешних фигурных скобок {} и поместите их в конец.Кроме того, обертка "body" выглядит ненужной (глядя на API документы ).

Вместо этого попробуйте.

code =  RestClient.post('https://platform.esh.ltd/user/login', {
              'ai' => "xx",
              'ci' => "660",
              'gi' => "25",
              'userip' => request.remote_ip,
              'firstname' => reader_params[:first_name],
              'lastname' => reader_params[:last_name],
              'email' => reader_params[:email],
              'password' => reader_params[:password],
              'phone' => reader_params[:phone_number],
              'prefix' => reader_params[:phone_code]
            },headers: {
               'x-trackbox-username' => 'pass',
               'x-trackbox-password' => 'user',
               'x-api-key' => 'xx',
               'Access-Control-Allow-Origin' => '*',
               'Access-Control-Allow-Headers' => "*",
               'Access-Control-Allow-Credentials'=> 'true'
                })
...