8

1 つのドメインに対してクロス オリジン リクエストを許可したいと考えています。私のプロジェクトでは Spring を使用しているため、新しい 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 からの単純なクエリで結果を返すこともできません。

localhost から実行してアクセスしたときの Chrome 開発者ツールのヘッダー情報は次のとおりです。この場合、リクエストは同じドメインからのものであり、javascript を介していませんが、CORS アノテーションはとにかくアクセス制御パラメーターを追加すると思いましたか?

応答ヘッダー:

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

私はスプリング ブートを使用していないため、構成手順を見逃したと思います。

4

2 に答える 2

3

この問題を自分で再現しました。@Configuration アノテーション付きクラスに @EnableWebMvc アノテーションがない場合に問題が発生します。この問題は、Sping Jira のバグとして詳細とともに報告しました: https://jira.spring.io/browse/SPR-13857

コードまたはドキュメントに修正が表示されます。ドキュメントの修正は、@CrossOrigin クラスの javadoc に @EnableWebMvc が必要であることを記載することですが、cors 注釈が @EnableWebMvc なしで機能するようにコードで修正することをお勧めします。

于 2016-01-11T15:06:59.800 に答える
0

"http://fiddle.jshell.net"の代わりに試していただけます"http://fiddle.jshell.net/"か?

于 2015-08-21T15:28:24.303 に答える