Угловой http пост-запрос не удался - PullRequest
0 голосов
/ 01 декабря 2019

Я создаю мобильное приложение, используя angular 8 / ionic 4 Я пытаюсь отправить форму на своем бэкэнде, и это Настраиваемая конечная точка Wordpress , Работа этой конечной точкидобавляет продукт woocommerce в корзину.

Когда я пытаюсь выполнить запрос post через почтальон , он работает и отправляеттовар в корзину.

Но при попытке сделать тот же запрос, используя angular , возвращающий успешное сообщение , но не отправляя запрос в корзину, как это должно быть,

Мой угловой код:

  addYithCompositeToCart(id: any) {

    const { token } = JSON.parse(localStorage.getItem('user'));

    let headers = {
      'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
      "Authorization": `Bearer ${token}`,
      // 'Cookie': localStorage.getItem('cookie')
    };

    let data = {
      "ywcp_selection[153CE4EE-C1A0-6D39-9AD5-58B51C5AB306]": "-1",
      "ywcp_variation_id[153CE4EE-C1A0-6D39-9AD5-58B51C5AB306]": "124136",
      "ywcp_quantity[153CE4EE-C1A0-6D39-9AD5-58B51C5AB306]": "1",
      "ywcp_selected_product_value[153CE4EE-C1A0-6D39-9AD5-58B51C5AB306]": "10",
      "ywcp_selection[471BAD03-9C3B-B44E-8584-348A5F33F8A6]": "-1",
      "attribute_pa_sphere[471BAD03-9C3B-B44E-8584-348A5F33F8A6]": "5-75",
      "ywcp_variation_id[471BAD03-9C3B-B44E-8584-348A5F33F8A6]": "110359",
      "ywcp_quantity[471BAD03-9C3B-B44E-8584-348A5F33F8A6]": "1",
      "ywcp_selected_product_value[471BAD03-9C3B-B44E-8584-348A5F33F8A6]": "102552",
      "quantity": "1",
      "add-to-cart": "102491",
    }



    let payload = new FormData();
    // // data = new FormData();

    // payload; 
    for (let key in data) {
      payload.append(key, data[key]);
    }

    this.http.post(`${environment.host}yith-composite/add-item?id=${id}`, payload, {
      headers
    })
      .toPromise()
      .then((data) => {
        console.log(data);
      })
      .catch((error) => {
        console.log(error);
      });

  }

Почтальон также просит: enter image description here

update

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

Тело, которое я посылаю из моего углового приложения , не читается на моем сервере, такон возвращает пустой массив , с другой стороны тело почтальона мой PHP-код читает так, потому что он работает нормально.

код php

function yith_custom_add_item( WP_REST_Request $request ) {
    $currentuserid_fromjwt = get_current_user_id();
    $user = get_user_by( 'id', $currentuserid_fromjwt );


    if( $user ) {

        $product_id = $_GET['id'];
        $url = get_permalink( $product_id );

        $cookie = 'wordpress_logged_in_856ec7e7dd32c9b2fc11b366505cf40d' . '=' . wp_generate_auth_cookie($currentuserid_fromjwt, time() + (10 * 365 * 24 * 60 * 60), 'logged_in') . ';';

        $cookie .='_icl_current_admin_language_d41d8cd98f00b204e9800998ecf8427e=en; wp_woocommerce_session_856ec7e7dd32c9b2fc11b366505cf40d=171%7C%7C1575326201%7C%7C1575322601%7C%7Cab91a0f0bbe0f3d5ae90dd5bdf7e396d; wfwaf-authcookie-5372c020d00bf5e1ea6c81123ff21ec1=171%7C%7C4574b4a9b1b62c8c7a1c1ae24cd4bd26d279bb5670fe87bcf7eb210835e43f22; _icl_current_language=en; PHPSESSID=5ed2009813f86633694a25e297d4ee06; wordpress_logged_in_856ec7e7dd32c9b2fc11b366505cf40d=deleted; woocommerce_items_in_cart=1; woocommerce_cart_hash=086ae7e00c53740163451a538fe8a9fc';


        if ( !empty($_POST) ) {
            $response = wp_remote_post( $url, array(
                'headers' => array(
                   'Cookie' => $cookie,
                   'Authorization' => $request->get_header('Authorization'),
                   'Content-Type' => 'application/x-www-form-urlencoded',
                ),
                'body'    => $_POST,

            ));

            return $response;
        } else {
            return "No body";
        }


    }

}

1 Ответ

0 голосов
/ 02 декабря 2019

вы также должны разрешить политику cors для вашего php-сервера.

вы можете сделать это с помощью контроля доступа, разрешающего отправку в ваших заголовках

<?php header("Access-Control-Allow-Origin: *");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...