Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как исправить ошибку «No 'Access-Control-Allow-Origin' header...» при аплоадинге карт (https://javascript.ru/forum/misc/69507-kak-ispravit-oshibku-no-%27access-control-allow-origin%27-header-pri-aploadinge-kart.html)

femalemoustache 29.06.2017 11:03

Как исправить ошибку «No 'Access-Control-Allow-Origin' header...» при аплоадинге карт
 
Делаю веб-приложение, которое будет постить картинки в группу. По клику на кнопку открываю попап, запрашивающий разрешение на доступ приложения к фотографиям группы. В ответ приходит access_token, который я использую при вызове 'photos.getWallUploadServer'. На полученный от этого сервиса адрес делаю post-запрос с картинкой. Фрагмент кода, вызывающий ошибку:
VK.Api.call('photos.getWallUploadServer', { group_id: vk.VK_GROUP_ID, access_token: event.data.access_token}, function (answer) {
    this.$http.post(answer.response.upload_url, { photo: this.canvas.toDataURL() }).then(response => {
        console.log(response.body);
    });
}.bind(this));


Вызов 'photos.getWallUploadServer' проходит, в answer.response.upload_url приходит адрес сервера. Но при попытке запостить на него картинку в консоли получаю ошибку:
Код:

XMLHttpRequest cannot load https://pu.vk.com/c837626/upload.php?act=do_add&mid=64545962&aid=-14&gid=14…bfc2a&rhash=b0300dd7aee6d872b0397f6f508e5c57&swfupload=1&api=1&wallphoto=1. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'АДРЕС_ПРИЛОЖЕНИЯ' is therefore not allowed access.

laimas 29.06.2017 11:13

Заголовок Access-Control-Allow-Origin разрешающий доступ к данным передает сервер и клиент никак не может изменить политику стороннего сервера.

femalemoustache 29.06.2017 11:26

Цитата:

Сообщение от laimas
Заголовок Access-Control-Allow-Origin разрешающий доступ к данным передает сервер и клиент никак не может изменить политику стороннего сервера.

Это я знаю. Я предполагаю, что возможно не хватает каких-то дополнительных действий. Или суть в том, что с аплоадинг в вк вообще нельзя делать с помощью ajax-запроса с клиента, а нужно выполнять его с сервера (например, с помощью php)?

laimas 29.06.2017 11:31

Цитата:

Сообщение от femalemoustache
Я предполагаю, что возможно не хватает каких-то дополнительных действий.

Каких действий? В данном случае клиент беспомощен. Речь об API, а значит по идее должно быть разрешение. Но возможно к каким-то конкретным данным даже доступ в рамках API запрещен. Я не в курсе этого.

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

femalemoustache 29.06.2017 11:53

Цитата:

Сообщение от laimas
Каких действий? В данном случае клиент беспомощен. Речь об API, а значит по идее должно быть разрешение. Но возможно к каким-то конкретным данным даже доступ в рамках API запрещен. Я не в курсе этого.

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

Спасибо. Значит буду пробовать серверный вариант.


Часовой пояс GMT +3, время: 15:57.