2016-08-18 3 views
3

Вот мои заголовки, скопированный из хрома Version 52.0.2743.82 (64-bit) (еще предстоит определить, является ли это изолируется хром)выборки API не возвращает заголовок местоположения

Request URL:http://localhost:8080/users 
Request Method:POST 
Status Code:201 
Remote Address:[::1]:8080 

Response Headers 
view parsed 
HTTP/1.1 201 
Access-Control-Allow-Origin: http://localhost:9000 
Vary: Origin 
Access-Control-Allow-Credentials: true 
X-Application-Context: application:xenoterracide,development 
Location: http://localhost:8080/users/17 
X-Content-Type-Options: nosniff 
X-XSS-Protection: 1; mode=block 
Cache-Control: no-cache, no-store, max-age=0, must-revalidate 
Pragma: no-cache 
Expires: 0 
X-Frame-Options: DENY 
Content-Length: 0 
Date: Thu, 18 Aug 2016 13:51:19 GMT 

Request Headers 
view parsed 
POST /users HTTP/1.1 
Host: localhost:8080 
Connection: keep-alive 
Content-Length: 92 
Pragma: no-cache 
Cache-Control: no-cache 
accept: application/json 
Origin: http://localhost:9000 
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36 
content-type: application/json 
DNT: 1 
Referer: http://localhost:9000/ 
Accept-Encoding: gzip, deflate 
Accept-Language: en-US,en;q=0.8 

вот как я создаю выборки клиенту

import 'isomorphic-fetch'; 
import { Router, RouterConfiguration } from 'aurelia-router'; 
import { Logger } from 'aurelia-logging'; 
import { Container, LogManager, autoinject } from 'aurelia-framework'; 
import { Route } from './main/Route'; 
import { HttpClient } from 'aurelia-fetch-client'; 

@autoinject 
export class App { 
router: Router; 
private log: Logger = LogManager.getLogger(App); 

constructor(container: Container) { 
    let client: HttpClient = new HttpClient; 
    client.configure(config => { 
     config.useStandardConfiguration() 
      .withBaseUrl('http://localhost:8080/') 
      .withDefaults({ 
       credentials: 'include', 
       headers: { 
        Accept: 'application/json' 
       } 
      }); 
    }); 
    container.registerSingleton(HttpClient,() => client); 
} 

это мой код услуги

@autoinject 
export class RegistrationSvc { 
private log: Logger = LogManager.getLogger(RegistrationSvc.name); 

constructor(private client: HttpClient) { 
} 

register(user: RegisterUser): Promise<any> { 
    let basic = user.email + ':' + user.passwordCredentials.password; 
    let log = this.log; 
    log.debug(`registering ${ basic }`); 

    return this.client.fetch('users', { 
     method: 'post', 
     body: json(user) 
    }).then(response => { 
     let location = response.headers.get("Location"); 
     log.debug(`location ${ location }`); 
    }); 

Я побежал это в консоли chromes пользователя

response.headers.forEach(v => console.log(v)); 
VM783:1 no-cache 
VM783:1 no-cache, no-store, max-age=0, must-revalidate 
VM783:1 0 
undefined 

... а где остальные мои заголовки? почему они отсутствуют?

ответ

5

По умолчанию, только заголовки, вы сможете получить в вашем JavaScript из ответа выборки являются:

  • Cache-Control
  • Content-Language
  • Content-Type
  • Expires
  • Last-Modified
  • Pragma

Выставить других, отправить Access-Control-Expose-Headers заголовок в ответ, со значением либо быть явный список только заголовки, которые вы хотите выставить или * выставить их все.