Как отключить кеширование в CORS-Anywhere? - PullRequest
0 голосов
/ 09 января 2019

Я сталкиваюсь с ошибкой CSRF token validation failed при попытке выполнить запрос POST на конечной точке, которая находится на другом сервере с использованием cors-anywhere. Это происходит главным образом потому, что токен CSRF, который я передаю серверу cors, кэшируется и, следовательно, проверка не проходит.

Я прочитал следующее Переполнение стека ссылка - Аналогичная проблема , Оказывается, моя проблема такая же, как в ссылке, но, поскольку эта ссылка не содержит никакого решения, я спрашиваю ее здесь.

Пожалуйста, помогите.

EDIT: -

                  $.ajax({
                          async: false,
                          crossDomain: true,
                          data: batch_request,
                          url: "https://cors-anywhere.herokuapp.com/https://......api.s4hana.ondemand.com:xxx/sap/opu/odata/sap/API_MKT_CONTACT_SRV;v=0002/$batch",
                          type: "POST",
                          beforeSend: function (xhr) {
                            xhr.setRequestHeader("Authorization", "Basic xxxxxxxxxxxxxxx");
                            xhr.setRequestHeader("X-CSRF-Token", "xxxxxxxxx");
                            xhr.setRequestHeader("Content-Type", "multipart/mixed;boundary=batch");
                          },
                          success:function(response) {
                              console.log("Succesfully added new contacts");
                              console.log(response);
                        },
                        error: function (error) {
                              console.log("Error");
                              console.log(error);
                        }
                    });

Я сделал вызов GET с использованием POSTMAN и получил токен CSRF с сервера. На данный момент я жестко закодировал токен в вызове AJAX. Когда я это делаю, я получаю следующую ошибку:

Error

1 Ответ

0 голосов
/ 09 января 2019

Проверка CSRF зависит от соответствия двух токенов, связанных с запросом. Обычно один находится в самом запросе, а другой хранится в сеансе, связанном с запросом cookie.

Поскольку вы проходите через простой прокси-сервер, вы анонимизируете себя, и с запросом не связано ни одного сеанса.


Если вы хотите обойти это, вам нужно написать собственный прокси на стороне сервера, который бы поддерживал сеанс для каждого пользователя.

...