Yii Framework 2.0 отправляет ajax запрос на получение из субдомена в основной домен

Я пытаюсь отправить запрос AJAX GET из субдомена в основной домен. Ниже мой код AJAX.

$.get('http://my-yii2-website.com/controller/test-method',
{data: '1')},
function(returnedData){

alert(returnedData);

},
'json'
);

Этот код выше находится в поддомене. В основной области у меня есть контроллер и метод действия, который выглядит следующим образом.

public function behaviors()
{
$subDomain = 'http://subdomain.my-yii2-website.com';

return [
'corsFilter' => [
'class' => \yii\filters\Cors::className(),
'cors'  => [
'Origin' => [$subDomain, ],
'Access-Control-Request-Method' => ['GET', ],
'Access-Control-Request-Headers' => ['*'],
'Access-Control-Allow-Credentials' => null,
'Access-Control-Max-Age' => 3600,
],
],
];
}

public function actionTestMethod()
{
$request = Yii::$app->request;
if($request->isAjax)
{
return json_encode('OK!');
}
else
{
return json_encode('ERROR');
}
}

Это работает. Но из-за оператора if в actionTestMethod () он не видит запрос как запрос AJAX. Возвращает предопределенное сообщение «ОШИБКА». Я работаю с Yii Framework 2.0.

-1

Решение

isAjax тесты на наличие X-Requested-With заголовок при условии, что любой, кто делает запрос Ajax, установит этот (нестандартный) заголовок.

jQuery установит его по умолчанию для тех же самых запросов на источник. Он не будет установлен для перекрестных запросов (поскольку он нестандартный, обычные настройки CORS отклонят его).

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

(Обратите внимание, что, как правило, «is ajax» является плохим тестом, «хотел бы, чтобы JSON вместо HTML» обычно был лучшим тестом, и его можно отключить заголовок Accept)

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]