Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 19.06.2017 10:15:17

Laravel 5.4.27 CORS

Перепробовал многие решения для настройки, но все тщетно. У меня есть скрипт по адресу сайт.ру/скрипт.жс я хочу, что бы его можно было  подключать как сторонную библиотеку с разных доменов, но у меня выходит что урл в браузере заблокирован(
Прошу подскажите, могу заплатить, если совет действительно поможет ибо перепробовал даже со стороны нгинкс настраивать

Не в сети

#2 19.06.2017 10:57:13

Re: Laravel 5.4.27 CORS

adblock?

Не в сети

#3 19.06.2017 14:33:27

Не в сети

#4 19.06.2017 14:36:00

Re: Laravel 5.4.27 CORS

для того чтобы подключить на страницу скрипт с другого домена CORS не нужен, а вот адблок может запросто залочить какой-то скрипт или картинку просто из-за неудачно выбранного имени – в его наборах есть совершенно идиотские правила…

Не в сети

#5 19.06.2017 14:37:20

Re: Laravel 5.4.27 CORS

можно с вами по емейлу списаться?
Написал вам через обратную связь или уточните куда написать?

Изменено adams (19.06.2017 14:40:04)

Не в сети

#6 19.06.2017 14:43:59

Re: Laravel 5.4.27 CORS

Просто я не использую его и пробовал с 3 браузеров, итог - скрипт (урл) заблокирован, смотрю через вкладку нетворкс

Изменено adams (19.06.2017 14:45:18)

Не в сети

#7 19.06.2017 15:52:59

Re: Laravel 5.4.27 CORS

спрашивай здесь. сделай скрин вкладки networks с ошибкой

Не в сети

#8 19.06.2017 16:10:25

Re: Laravel 5.4.27 CORS

Подключаю на страницу <script type="text/javascript" src="//site.com" async</script> или <script type="text/javascript" src="//site.com/1.js" async</script>

и выдает

17632590_m.png


но если перейти по урл scr то все нормально отдает, как только я вашею на поддомен где весит ларавел тоже все ок

Изменено adams (19.06.2017 16:12:07)

Не в сети

#9 19.06.2017 16:31:07

Re: Laravel 5.4.27 CORS

что-то с настройками веб-сервера – для первого запроса я вижу не до конца закрашенный зелёный замок – то есть 1.html открывается по https с валидным сертификатом, скрипты грузятся либо по http либо по https с невалидным сертификатом – ни то ни другое делать нельзя, любой браузер такие вещи блокирует без вариантов

Не в сети

#10 19.06.2017 16:39:57

Re: Laravel 5.4.27 CORS

Я специально не закрасил, я создал тестовую стр на другом своем сайте с валидным шттпс, там же подключаю скрипт src="//site.com/1.js" разве он сам не выберет протокол? (скрипт грузиться с сайта без шттпс), просто знаю когда указывал src="http://site.com/1.js" мне мозила сразу писала, что заблокирована часть смешанного контента, по этому я убрал "http:" и думал, что грузит нормально.

1)что вы имели введу под "что-то с настройками веб-сервера"? у меня стоит нгинкс + пхп фпм

2)если мой второй сайт использует протокол шттп, то мою либу можно подключить только на сайтах с шттп? если хочу, что бы и шттпс работал, то нужно купить сертификат и не настраивать пере адресацию? (что бы можно было и через шттп и через шттпс грузить)

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

Изменено adams (19.06.2017 16:44:35)

Не в сети

#11 19.06.2017 17:00:53

Re: Laravel 5.4.27 CORS

cors не используется при подключении скриптов со сторонних ресурсов

//site.com… должен подключать по тому же протоколу что и документ – это верно, но там https должен быть настроен тоже – должен быть валидный сертификат, соответствующий домену на который отправляется запрос. если сертификат невалидный или выдан для другого домена – такой контент будет считаться «недоверенным» и будет заблокирован. это я и имею в виду под настройками веб-сервера

я вижу в скриншоте только зачёркнутый замок на хосте – значит надо смотреть открывать сведения о запросе и смотреть – какой протокол, какой сертификат, там скорее всего будет описание ошибки

по второму вопросу – если документ загружен по http – он может подключать ассеты (стили, скрипты, изображения) с любого хоста по http либо по https с валидным сертификатом (соответствующим домену, заверенным центром сертификации). если сайт загружен по https с валидным сертификатом – он может подключать ассеты только с хостов по https с валидным сертификатом. если сайт загружен по https с самоподписанным или невалидным сертификатом он может подключать ассеты либо с того же хоста либо с хостов по https с валидным сертификатом. это всё

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

Не в сети

#12 19.06.2017 17:11:19

Re: Laravel 5.4.27 CORS

На скрине где зачекнут замок идет шттп обычное, не более того, и вы про логи нгикса говорите "скрипты грузятся либо по http либо по https с невалидным сертификатом – ни то ни другое делать нельзя, любой браузер такие вещи блокирует без вариантов"?

Хотите сказать, что если я сделаю обычный самоподписанный сертификат, то сайты с валидным шттпс смогут спокойно загружать мою либу?(насчет самоподписанного, мне мозила вечно просит внести в исключение, по этому лучше приобрети)

Спасибо, я чуть позже перепроверю все! С меня как и говорил мини бонус полагается (напишите в пм номер вм кошелька, пришлю на пиво)

Пс. мини вопрос по https://laravel.ru/docs/v5/eloquent-relationships
Я правильно понимаю, что настройка отношений в итоге даст мне обьект с данными из 2 и тп. таблиц?
И что в продакшене будет производительней? С ларавелем работаю около месяца, но отношения пока не трогал, все данные получаю с помощью моделей Model::whereIn('id', Model2::where('key', '=', $value)->plunk('key', 'id')->toArray())->get(); мне кажется это менее затратным по ресурсам или ошибаюсь?

Изменено adams (19.06.2017 17:13:14)

Не в сети

#13 20.06.2017 07:15:50

Re: Laravel 5.4.27 CORS

На скрине где зачекнут замок идет шттп обычное, не более того, и вы про логи нгикса говорите

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

Хотите сказать, что если я сделаю обычный самоподписанный сертификат, то сайты с валидным шттпс смогут спокойно загружать мою либу?

не смогут. самоподписанный сертификат не считается валидным – браузер же не знает, кто его выдал, может быть кто-то кто перехватывает трафик и подсовывает свой левый код в страницы? https решает не только и не столько проблему шифрования, сколько обеспечение подлинности источника данных и контента который им предоставлен

С меня как и говорил мини бонус полагается (напишите в пм номер вм кошелька, пришлю на пиво)

у меня нет вм-кошелька, я тут на форуме не ради денег, просто работа скучная smile smile smile

мне кажется это менее затратным по ресурсам или ошибаюсь?

ошибаешься. то что ты описываешь уже реализовано в моделях, почитай раздел про «жадную загрузку» (eager loading в оригинальной документации) – оно как раз для того и сделано чтобы одним запросом можно было загрузить все связанные модели и разложить их куда нужно. это намного проще и работает эффективно

Не в сети

#14 20.06.2017 12:08:18

Re: Laravel 5.4.27 CORS

Уже глянул, надо подробнее вникнуть, я просто русскую версию смотрел, а это критическое "исправление", просто у меня уже прилично кода использует такие "зависимости", вот и думаю если ли смысл переписать? или можно оставить, а на будущее писать через https://laravel.com/docs/5.4/eloquent-r … one-to-one one-to-one мне же это подходит, если я хочу связать данные с одной таблицы с данными с другой? и последний вопрос, я правильно понимаю, что на выходе будет один объект с общими данными из двух таблиц?(или будет вложенность объектов?!)

Изменено adams (20.06.2017 12:09:35)

Не в сети

#15 20.06.2017 12:35:59

Re: Laravel 5.4.27 CORS

если ли смысл переписать?

да

one-to-one мне же это подходит, если я хочу связать данные с одной таблицы с данными с другой?

нет. тип связи определяется логикой того как одни записи принадлежат другим

я правильно понимаю, что на выходе будет один объект с общими данными из двух таблиц?(или будет вложенность объектов?!)

связи на моделях представлены как их атрибуты. для hasOne и belongsTo такой псевдоатрибут содержит единичную модель, для hasMany и belongsToMany – коллекцию моделей

Не в сети

#16 20.06.2017 18:30:03

Re: Laravel 5.4.27 CORS

Немного не ловко, но если можно уточню


namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
  /**
   * Получить комментарии статьи блога.
   */
  public function comments()
  {
    return $this->hasMany('App\Comment');
  }
}


namespace App;

use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{
  /**
   * Получить статью данного комментария.
   */
  public function post()
  {
    return $this->belongsTo('App\Post');
  }
}


1)Comment::find(1)->post; - работает

2)Comment::where('id', '=', 1)->post; - не работает, пишет Undefined property: Illuminate\Database\Eloquent\Builder::$post


3)Comment::find(1)->post(); - работает, но выводим много инфы и браузер виснет


Не могу понять по п.2 и п.3
и как работать с belongsTo если мне нужно выполнить условие в начале, пример выбрать книги где год 2001, а потом от выбранных айдишников(или айдишника) получить все авторов этих книг из другой таблицы....пока еще гуглю буржнет

Изменено adams (20.06.2017 18:34:29)

Не в сети

#17 20.06.2017 19:26:12

Re: Laravel 5.4.27 CORS

Или я не могу $name = Comment::whereIn('id', [....])->post; вот так сделать и получить на выходе обьекты комментс с вложеными в них обьектами пост или обьекты где для каждого ид коммента выводиться вся инфа по комменту + вся инфа по связанному с ним посту, я думал это отношения как раз и решают

Не в сети

#18 20.06.2017 22:20:03

Re: Laravel 5.4.27 CORS

2)Comment::where('id', '=', 1)->post;

Дело в том, что метод where() возвращает объект Eloquent\Builder, а динамическое свойство post описано в классе модели. Поэтому надо вернуть модель. Сделать это можно как в первом пункте или так

Comment::where('id', '=', 1)->first()->post

3)Comment::find(1)->post();

post() со скобками опять же возвращает не Post, а объект отношения, с возможностью дальнейшего построения запроса, как в предыдущем пункте, т.е.

3)Comment::find(1)->post()->where(...)->first();

По поводу связей очень пригодится жадная загрузка

Не в сети

#19 20.06.2017 22:42:03

Re: Laravel 5.4.27 CORS

Мне понравилось with(), спасибо!
кст а случайно не знаете, когда жму восстановить пароль приходит мыло, перехожу по ссылке, ввожу новый пасс, стр презагружается, но ничего нет ни ошибки ни сообщения, что все ок и войти со старым пасом не могу, в контролере ресет пассворд толком ничего нет, не пойму куда смотреть...

Не в сети

#20 20.06.2017 22:56:08

Re: Laravel 5.4.27 CORS

object(Illuminate\Support\ViewErrorBag)#180 (1) { ["bags":protected]=> array(1) { ["default"]=> object(Illuminate\Support\MessageBag)#181 (2) { ["messages":protected]=> array(1) { ["token"]=> array(1) { [0]=> string(28) "The token field is required." } } ["format":protected]=> string(8) ":message" } } }


смотрю переменку ероррс, хотя поле токен заполнено

Не в сети

#21 20.06.2017 23:01:05

Re: Laravel 5.4.27 CORS

https://laracasts.com/discuss/channels/ … bad?page=1
предлогают <input type="hidden" name="token" value="{{ $token }}">
хотя у меня это поле есть и выводиться с помощью {{ csrf_field() }}

Не в сети

#22 20.06.2017 23:08:29

Re: Laravel 5.4.27 CORS

да решил проблему)
но вышло, что передаеться 2 токена

<input name="_token" value="F9ZJEod7rUu6zzq3p3DmNgFeTRAcpQdY1i3IEuXj" class="has-value" type="hidden">
генерируемый и с письма

<input name="token" value="c4a8e6891e61b347667bd0214f49f0817995683e969b4ff7a3b0ef8e94f0ba88" class="has-value" type="hidden">

или это нормально?извините, что надоедаю))

Не в сети

#23 21.06.2017 07:46:12

Re: Laravel 5.4.27 CORS

хотя у меня это поле есть и выводиться с помощью {{ csrf_field() }}

этого токена достаточно, других не нужно

Не в сети

#24 21.06.2017 12:19:00

Re: Laravel 5.4.27 CORS

<input type="hidden" name="token" value="{{ $token }}">
пока не добавил это, при переходе по ссылке с емейла и ввода мыла + нового пароля, после отправки ничего не показывалось и не переадресовывало, таже стр с теми же полями + если вардампить переменку еррор то выводило

object(Illuminate\Support\ViewErrorBag)#180 (1) { ["bags":protected]=> array(1) { ["default"]=> object(Illuminate\Support\MessageBag)#181 (2) { ["messages":protected]=> array(1) { ["token"]=> array(1) { [0]=> string(28) "The token field is required." } } ["format":protected]=> string(8) ":message" } } }


{ ["token"]=> array(1) { [0]=> string(28) "The token field is required." }


вот
как тогда это испраивть?

Не в сети

Подвал раздела