2015-08-21 2 views
6

Я хочу разрешить запросы на перекрестный поиск для одного домена. Мой проект использует Spring, поэтому я хочу воспользоваться новой поддержкой CORS.Контрольная сумма контроллера контроллера CORS не работает

Я использую версию 4.2.0 для всех springframework зависимостей.

Я следовал примеру здесь https://spring.io/blog/2015/06/08/cors-support-in-spring-framework#disqus_thread и пробовал первую версию. Мои контрольные аннотации выглядят так:

@CrossOrigin(origins = "http://fiddle.jshell.net/", maxAge = 3600) 
@Controller 
@RequestMapping("/rest") 
public class MyController 

Если я правильно понял, то mvc-config является альтернативным методом. Я не пробовал, а также:

<mvc:cors> 
    <mvc:mapping path="/**" 
     allowed-origins="http://fiddle.jshell.net/, http://domain2.com" 
     allowed-methods="GET, PUT" 
     allowed-headers="header1, header2, header3" 
     exposed-headers="header1, header2" allow-credentials="false" 
     max-age="123" />  
</mvc:cors> 

С либо методами, то ответ, кажется, не содержат ничего подобного Access-Control-Allow-Origin, ни я могу получить результат обратно через простой запрос из jsfiddle.

Информация о заголовке из инструментов разработчика Chrome при запуске и доступе к локальному хосту приведена ниже. В этом случае запрос выполняется из одного домена, а не через javascript, но я думал, что аннотация CORS добавит параметры контроля доступа в любом случае?

Response Headers:

Content-Length:174869 
Content-Type:text/html;charset=UTF-8 
Date:Fri, 21 Aug 2015 12:21:09 GMT 
Server:Apache-Coyote/1.1 

заголовка запроса:

 Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*\/*;q=0.8 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:en-US,en;q=0.8,ro;q=0.6,de;q=0.4,fr;q=0.2 
Cache-Control:no-cache 
Connection:keep-alive 
Cookie:JSESSIONID=831EBC138D2B7E176DF4945ADA05CAC1;_ga=GA1.1.1046500342.1404228238; undefined=0 
Host:localhost:8080 
Pragma:no-cache 
Upgrade-Insecure-Requests:1 
User-Agent:Mozilla/5.0(Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36 

Я не использую сапог весной и я предполагаю, что я пропустил шаг конфигурации.

+0

Я также пытался использовать '@ RestController' вместо' @ Controller', но, похоже, это не имело никакого значения для заголовков. – ilinca

+0

вы пробовали из другого домена? Если запрос не является перекрестным, то я не понимаю, почему сервер должен добавить заголовки CORS в ответ –

+0

Вы каким-то образом смогли его решить? У меня та же проблема. –

ответ

0

Не могли бы вы использовать "http://fiddle.jshell.net" вместо "http://fiddle.jshell.net/"?

+0

Я просто попробовал и до сих пор не видят материал CORS в заголовке. Для записи я тестировал как jsfiddle, так и plain из браузера. – ilinca

+0

Не могли бы вы представить простой проект, который воспроизводит эту проблему, и я посмотрю. –

2

Я воспроизвел эту проблему для себя. Проблема возникает, когда у меня нет аннотации @EnableWebMvc в аннотированном классе @Configuration. Я сообщил об этой проблеме как об ошибке в Sping Jira с подробностями за ее пределами: https://jira.spring.io/browse/SPR-13857

Я вижу исправление либо в коде, либо в документации. Исправление документации должно состоять в том, чтобы указать в классе @CrossOrigin javadoc, что требуется @EnableWebMvc, но я предпочел бы исправление в коде, чтобы аннотация cors работала без @EnableWebMvc.

+1

Я попытался использовать @EnableWebMvc, но все еще не работал :( –

+0

моя конфигурация не работала, пока я не добавил аннотацию EnableWebMvc ... –