Странные двойные вопросительные знаки в параметрах строки запроса с помощью fetch api и laravel

#php #laravel #fetch #aurelia #fetch-api

#php #laravel #выборка #aurelia #fetch-api

Вопрос:

Столкнувшись с очень странной проблемой при публикации параметров строки запроса из браузера (chrome) с использованием fetch API, а затем при разборе параметров на стороне сервера с помощью php-laravel, ключ параметра предваряется двойными вопросительными знаками.

Я использую aurelia fetch client, если это имеет значение.

 let url = new URL('https://myapp.com/api/companies/');
    let param = {'id_owner': 34};
    url.search = new URLSearchParams(param);
    this.http.fetch(url, {
      mode: 'cors',
      method: 'get'
    })
  

на стороне сервера, когда я пытаюсь получить доступ id_owner , ничего не отображается.
Я добавил следующую строку в свой контроллер (laravel) и вывод

  public function index(Request $request)
    {
        return [$_SERVER['REQUEST_URI'], $_SERVER['QUERY_STRING'], $_POST, $_GET, $request->query('??id_owner'), $request->all()];

  

и, что удивительно, вывод содержит двойные вопросительные знаки, добавленные к ключу

 [
"/api/companies/?id_owner=34", // [$_SERVER['REQUEST_URI']
"??id_owner=34",      // $_SERVER['QUERY_STRING']
[],                   // $_POST
{"??id_owner":"34"},  // $_GET
"34",                 // $request->query('??id_owner') , a laravel feature
{"??id_owner":"34"}   // $request->all() , again a laravel feature
]
  

В идеале должно быть просто и прямолинейно использовать $_GET[‘id_owner’] для получения значения, но с добавленными вопросительными знаками это не работает. Откуда они берутся? Есть идеи, что происходит не так?

Комментарии:

1. похоже, проблема с кодировкой URL перед отправкой его на PHP. Можете ли вы попробовать журнал консоли перед отправкой запроса?

2. из чего получен вывод https://myapp.com/api/companies/ ? перед запуском процесса.

3. журнал консоли перед отправкой запроса href: "https://myapp.com/api/companies/?id_owner=34"

4. @Bira когда я обращаюсь к URL https://myapp.com/api/companies/ , я получаю этот JSON ["/api/companies","?",[],{"?":""},null,{"?":null}]

5. Я не знаю, может ли это помочь, но проверьте это: github.com/angular/angular/issues/14531 . Эта проблема заключается в том, что 1-й параметр имеет только предшествующий ? . В комментарии запрос на извлечение был отклонен, потому что они сказали: Устаревший, поскольку URLSearchParams (Angular) устарел, в то время как HttpParams еще не поддерживает синтаксический анализ строки.