Загрузка файла HTTP с CORS и Angular - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь сгенерировать запрос POST / PUT, где я загружаю файл в URL.Бэкэнд-скрипт написан на PHP с использованием Lumen / Laravel 5.4;для внешнего интерфейса я использую Angular 7 с HttpClient , чтобы отправить файл через formdata.

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

  • IN FIREFOX : запрос POST не генерируется после предполетного полета(OPTIONS) запрос и показывает общую ошибку CORS:

    Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://storage.local/upload. (Reason: CORS request did not succeed).[Learn More]

  • IN CHROME : запрос POST генерируется, но ответне показывается и выдает net::ERR_CONNECTION_ABORTED

Угловой код:

let form = new FormData();
form.append("material", mmfile);
return this.http.post(environment.storage_server, form, {
  headers: new HttpHeaders().append("authorization", token),
}).subscribe( event => {
  console.log(event)
}, error => {
  console.log(error);
}, () =>{
  console.log("done");
})

Заголовки в PHP Скрипт:

header("Access-Control-Allow-Origin", "*")
header("Access-Control-Allow-Methods", "POST, GET, OPTIONS")
header("Access-Control-Allow-Credentials", "true")
header("Access-Control-Allow-Headers", "Origin, Content-Type, Authorization, Content-Length, X-Requested-With, Host, Accept-Encoding, Referer, Accept, Content-Disposition, Content-Range, Content-Disposition, Content-Description")
header("Access-Control-Max-Age", "86400");

С уважением

PS: Я пишу после попытки решить эту проблему в течение 6 часов, поэтому, возможно, я пропустил несколько вещей.Не стесняйтесь редактировать или запросить любую информацию.

РЕДАКТИРОВАТЬ:

Заголовки, возвращенные в OPTIONS

    HTTP/1.0 200 OK
Date: Tue, 11 Dec 2018 12:02:20 GMT
Server: Apache/2.4.29 (Ubuntu)
Cache-Control: no-cache, private
Access-Control-Allow-Origin: http://localhost:4200
Access-Control-Allow-Methods: POST
Access-Control-Allow-Headers: AUTHORIZATION
Content-Length: 0
Connection: close
Content-Type: text/html; charset=UTF

Заголовки, отправленные на OPTIONS:

Host: storage.local
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Access-Control-Request-Method: POST
Access-Control-Request-Headers: authorization
Origin: http://localhost:4200
Connection: keep-alive
...