Из-за некоторых ограничений для jhipster и типов данных, которые они позволяют передавать, моей команде и мне нужно написать собственный микросервис, используя MongoTemplate, а не MongoRepository.
При попытке запустить один из наших микроуслуг в субприложении (с некомментированным CORS в dev-приложении и с добавлением аннотации @CrossOrigin ("*") к сервису) у нас все еще возникают проблемы с получением этого:
"Заголовок 'Access-Control-Allow-Origin' присутствует на запрашиваемом ресурсе. Следовательно, Origin 'http://localhost:8080' не имеет доступа." на переднем конце.
Действительно, глядя на заголовки, я не вижу ключ аутентификации.
Чего мне не хватает, кроме комментария CORS от нашего subApp MicroService и включения упомянутой выше аннотации, которая позволила бы успешно ответить на интерфейс?
Уже откомментированный CORS из приложения subApp-dev.yml
Уже добавлена аннотация @CrossOrigin ("*") над @requestmapping / api
...
import com.simple.app.domain.Vehicle;
import com.simple.app.service.VehicleService;
@CrossOrigin("*")
@RequestMapping("/api")
@RestController
public class VehicleResource {
@Autowired
private VehicleService vehicleService;
...
jhipster:
http:
version: V_1_1 # To use HTTP/2 you will need to activate TLS (see application-tls.yml)
cache: # Cache configuration
hazelcast: # Hazelcast distributed cache
time-to-live-seconds: 3600
backup-count: 1
management-center: # Full reference is available at: http://docs.hazelcast.org/docs/management-center/3.9/manual/html/Deploying_and_Starting.html
enabled: false
update-interval: 3
url: http://localhost:8180/mancenter
# CORS is disabled by default on microservices, as you should access them through a gateway.
# If you want to enable it, please uncomment the configuration below.
cors:
allowed-origins: "*"
allowed-methods: "*"
allowed-headers: "*"
exposed-headers: "Authorization,Link,X-Total-Count"
allow-credentials: true
max-age: 1800
Front End
Константы:
export const VERSION = process.env.VERSION;
export const DEBUG_INFO_ENABLED: boolean = !!process.env.DEBUG_INFO_ENABLED;
export const SERVER_API_URL = process.env.SERVER_API_URL;
export const BUILD_TIMESTAMP = process.env.BUILD_TIMESTAMP;
Услуга:
где this.resourceURL = SERVER_API_URL + api / serviceName
query(req?: any): Observable<EntityArrayResponseType> {
const options = createRequestOption(req);
return this.http.get<Configures[]>(this.resourceURL, { params: options, observe: 'response' });
}
действительно надеется получить ответ от службы.