2016-10-14 4 views
0

Grailsの3戦をDELETE、角度2私はGrailsのに3.2.0.M2を使用しています。私はデフォルトのコントローラを使って残りのプロファイルを使用していたので、基本的にすべてのコードがUrlMappings.groovyファイルにあります。ここでインターセプター - nginxの</p> <p>の下で実行されている作品をGETしかし入れないで、POST、Tomcatの下

は、私がGETにCORSエラーを得ていたインターセプターなしインターセプタコード

package heroes2 
class HeroInterceptor { 

    boolean before() { 
     // header("Access-Control-Allow-Origin", "http://localhost:8081") 
     response.setHeader("Access-Control-Allow-Origin", "*") 
     // response.setHeader("Access-Control-Allow-Origin", "http://centos7-ansible") 
     if (request.method == "OPTIONS") { 
      response.setHeader("Access-Control-Allow-Origin", "*") 
      // response.setHeader("Access-Control-Allow-Origin", "http://centos7-ansible") 
      response.setHeader("Access-Control-Allow-Credentials", "true") 
      response.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE") 
      response.setHeader("Access-Control-Max-Age", "3600") 
      response.status = 200 
     } 

     true 
    } 

です。今、GETはコードを取得します。ただし、POST、PUTおよびDELETEアクションでは、ブラウザコンソールにCORSエラーが表示されます。

GET以外のアクションをカバーするために、プラグインのgrailsコードに他の変更を加える必要がありますか?

答えて

0

私は8889ポートに角型サーバーを持っており、以下のインターセプターは、GRAILS 3.1.6のApiControllerで完全に機能します。

class ApiInterceptor { 

ApiInterceptor() { 
    matchAll() 
} 

boolean before() { 
    println " Interceptor calling..." 
    header("Access-Control-Allow-Origin", "http://localhost:8889") 

    boolean options = ("OPTIONS" == request.method) 
    if (options) { 
    println " OPTIONS case..." 
    header("Access-Control-Allow-Origin", "http://localhost:8889") 
    header("Access-Control-Allow-Credentials", "true") 
    header("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT") 
    header("Access-Control-Max-Age", "3600") 

    response.status = 200 
    } 

true 
} 

boolean after() { true } 

} 

私は*なしではなくlocalhost:yourportとURLといくつかのテストを開始し、オプション・ブランチ-IFが正しく入力されているかどうかを確認するために迎撃の内側にいくつかのprintlnを挿入することが示唆されました。

+0

こんにちはステファノ、助けてくれてありがとう。しかし、POSTをしようとすると、Cross Origin Requestのブロックと同じ問題がまだ残っています。面白いことに、プリントがtomcatログに表示されていません。 – John

+0

ログの出力がないと、オプションの部分を入力していないことが示唆されているため、インターセプタはPOST、DELETE、PUTメソッドを許可していません。それが鍵です。私はあなたのブラウザがプリフライトCORS OPTIONSリクエストをしていない理由を調査すべきだと思います。 (https://www.html5rocks.com/ja/tutorials/cors/) –

関連する問題