@marsdenden

Как средствами PHP CURL выполнить CORS запрос на другой домен?

Суть такая.
Есть сервер с базовой авторизацией. Есть пример доступа к данным с использованием логина-пароля на jQuery. Он прекрасно отрабатывает, авторизуется, получает данные.
Но, когда я то же самое пытаюсь сделать на PHP, то получаю отлуп. Исследование в браузере показало, что AJAX формирует два запроса (что, в общем-то, нормально для кросс-доменного варианта).

Судя по всему, без запроса OPTIONS я и получаю отлуп, хотя и пытаюсь в POST запрос вставить нужные заголовки

POST /login HTTP/1.1
Authorization: Basic ааааааааааа==
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36
Host: needserver.com
Accept: */*
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Referer: http://myserver.ru
Content-Type: application/json; charset=utf-8
Content-Length: 49
Connection: keep-alive
X-Compress: 1
Access-Control-Allow-Origin: *
origin: http://myserver.ru


Видимо, звездочка не прокатывает и сервер отслеживает предыдущий запрос OPTIONS /login HTTP/1.1, поскольку в браузере видно, что возвращает Access-Control-Allow-Origin: myserver.ru

Вот, собственно, вопрос - как средствами php curl сформировать запрос OPTIONS?

версия php 5.5
  • Вопрос задан
  • 1620 просмотров
Решения вопроса 1
@marsdenden Автор вопроса
Можно считать вопрос закрытым. Проблема не в options.
ответ на вопрос
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'OPTIONS');

запрос OPTIONS проходит нормально, но, тем не менее, авторизация не идет. Буду искать дальше
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
curl не "учитывает" cors. Это только для браузеров ограничение.

дебаг curl? Что отдает-то?
curl_error?
Ответ написан
Rou1997
@Rou1997
Используйте Fiddler чтобы сравнить и понять что не так, можно еще и в нем самом конструировать запросы и отправлять, запрос OPTIONS отправить с помощью curl точно можно, см. документацию, но вряд ли это обязательно, скорее проблема в другом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы