2015-11-07 5 views
2

Я пытаюсь заставить Chrome Logger работать в приложении Angular, работающем на PHP-сервере, но по какой-то причине заголовок X-ChromeLogger-Data, похоже, не проходит, когда к API обращаются к угловому приложение.Заголовок ответа исчезает с помощью Angular

Если я сразу же открою точку доступа API или удалю его с помощью запроса jQuery.get(), все будет работать нормально, даже если я сделаю запрос ajax из другого домена. API также работает правильно, даже если он используется в приложении «Угловое». Просто один заголовок исчезает где-то на этом пути. Он даже не отображается в консоли Chrome.

Что может привести к исчезновению заголовка?

Вот запрос, сделанный с jQuery.get()

Request: 
GET /?action=load HTTP/1.1 
Host: - 
Connection: keep-alive 
Accept: application/json, text/javascript, */*; q=0.01 
Origin: - 
X-FirePHP-Version: 0.0.6 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36 
Referer: - 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: fi-FI,fi;q=0.8,en-US;q=0.6,en;q=0.4,sv;q=0.2 

Response: 
HTTP/1.1 200 OK 
Date: Sat, 07 Nov 2015 10:41:22 GMT 
Server: Apache/2.4.12 (Ubuntu) 
X-Powered-By: PHP/5.6.11-1ubuntu3.1 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE 
Access-Control-Allow-Headers: Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control, X-ChromeLogger-Data 
X-ChromeLogger-Data: eyJ2ZXJzaW9uIjoiNC4wIiwiY29sdW1ucyI6WyJsYWJlbCIsImxvZyIsImJhY2t0cmFjZSIsInR5cGUiXSwicm93cyI6W1siQVBJIiwiQVBJIHJlYWNoZWQiLCJ1bmtub3duIiwid2FybiJdXSwicmVxdWVzdF91cmkiOiJcLz9hY3Rpb249bG9hZCJ9 
Content-Length: 15 
Keep-Alive: timeout=5, max=100 
Connection: Keep-Alive 
Content-Type: text/html; charset=UTF-8 

И вот один из углового приложения:

Request: 
GET /?action=load HTTP/1.1 
Host: - 
Connection: keep-alive 
Accept: application/json, text/plain, */* 
Origin: - 
X-FirePHP-Version: 0.0.6 
User-Agent: Mozilla/5.0 (Linux; U; Android 4.0; en-us; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 
Referer: - 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: fi-FI,fi;q=0.8,en-US;q=0.6,en;q=0.4,sv;q=0.2 

Response: 
HTTP/1.1 200 OK 
Date: Sat, 07 Nov 2015 10:34:33 GMT 
Server: Apache/2.4.12 (Ubuntu) 
X-Powered-By: PHP/5.6.11-1ubuntu3.1 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE 
Access-Control-Allow-Headers: Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control, X-ChromeLogger-Data 
Content-Length: 15 
Keep-Alive: timeout=5, max=100 
Connection: Keep-Alive 
Content-Type: text/html; charset=UTF-8 

Угловой код, используемый, чтобы сделать запрос:

$http.get(endpoint, { params : { action : 'load' } }).then(
    function(response) { 
     console.log(response); 
    }, 
    function() { 
     console.log('fail'); 
    } 
); 
+0

Не могли бы вы показать свой угловой код? –

+0

@OlaviSau Конечно, добавьте его к вопросу. – Schlaus

+1

Если я правильно понял, это происходит, когда вы используете только угловой '$ http', а jQuery или любой другой запрос работает нормально? – Dvir

ответ

1

После Совет Двира для дальнейшего изучения различий между запросами (с помощью Fiddler) Я, наконец, менеджер, чтобы решить эту проблему. Я запускал приложение «Угловое» с симулятором мобильных устройств Chrome, и оказалось, что Monolog ChromePHPHandler требует, чтобы текст «Chrome» присутствовал в заголовке User-Agent, что не было, когда симулятор был включен.