Skip to content

Instantly share code, notes, and snippets.

@dswwsd
Last active August 15, 2017 09:53
Show Gist options
  • Save dswwsd/b17ec2fc347a25f29e6e89fa8c8e9044 to your computer and use it in GitHub Desktop.
Save dswwsd/b17ec2fc347a25f29e6e89fa8c8e9044 to your computer and use it in GitHub Desktop.

Revisions

  1. dswwsd renamed this gist Aug 15, 2017. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  2. dswwsd revised this gist Aug 15, 2017. 1 changed file with 12 additions and 35 deletions.
    47 changes: 12 additions & 35 deletions CorsComposition.java
    Original file line number Diff line number Diff line change
    @@ -1,39 +1,16 @@
    package actions;

    import java.lang.annotation.*;
    Response response = context.response();
    response.setHeader("Access-Control-Allow-Origin", "*");

    public class CorsComposition {
    //Handle preflight requests
    if(context.request().method().equals("OPTIONS")) {
    response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE");
    response.setHeader("Access-Control-Max-Age", "3600");
    response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization, X-Auth-Token");
    response.setHeader("Access-Control-Allow-Credentials", "true");

    /**
    * Wraps the annotated action in an <code>CorsAction</code>.
    */
    @With(CorsAction.class)
    @Target({ ElementType.TYPE, ElementType.METHOD })
    @Retention(RetentionPolicy.RUNTIME)
    public @interface Cors {
    String value() default "*";
    }
    return delegate.call(context);
    }

    public static class CorsAction extends Action<Cors> {

    @Override
    public Promise<SimpleResult> call(Context context) throws Throwable {
    Response response = context.response();
    response.setHeader("Access-Control-Allow-Origin", "*");

    //Handle preflight requests
    if(context.request().method().equals("OPTIONS")) {
    response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE");
    response.setHeader("Access-Control-Max-Age", "3600");
    response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization, X-Auth-Token");
    response.setHeader("Access-Control-Allow-Credentials", "true");

    return delegate.call(context);
    }

    response.setHeader("Access-Control-Allow-Headers","X-Requested-With, Content-Type, X-Auth-Token");
    return delegate.call(context);
    }

    }
    }
    response.setHeader("Access-Control-Allow-Headers","X-Requested-With, Content-Type, X-Auth-Token");
    return delegate.call(context);
  3. dswwsd revised this gist Aug 15, 2017. 1 changed file with 0 additions and 4 deletions.
    4 changes: 0 additions & 4 deletions CorsComposition.java
    Original file line number Diff line number Diff line change
    @@ -1,10 +1,6 @@
    package actions;

    import java.lang.annotation.*;
    import play.libs.F.Promise;
    import play.mvc.*;
    import play.mvc.Http.Context;
    import play.mvc.Http.*;

    public class CorsComposition {

  4. dswwsd created this gist Aug 15, 2017.
    43 changes: 43 additions & 0 deletions CorsComposition.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,43 @@
    package actions;

    import java.lang.annotation.*;
    import play.libs.F.Promise;
    import play.mvc.*;
    import play.mvc.Http.Context;
    import play.mvc.Http.*;

    public class CorsComposition {

    /**
    * Wraps the annotated action in an <code>CorsAction</code>.
    */
    @With(CorsAction.class)
    @Target({ ElementType.TYPE, ElementType.METHOD })
    @Retention(RetentionPolicy.RUNTIME)
    public @interface Cors {
    String value() default "*";
    }

    public static class CorsAction extends Action<Cors> {

    @Override
    public Promise<SimpleResult> call(Context context) throws Throwable {
    Response response = context.response();
    response.setHeader("Access-Control-Allow-Origin", "*");

    //Handle preflight requests
    if(context.request().method().equals("OPTIONS")) {
    response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE");
    response.setHeader("Access-Control-Max-Age", "3600");
    response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization, X-Auth-Token");
    response.setHeader("Access-Control-Allow-Credentials", "true");

    return delegate.call(context);
    }

    response.setHeader("Access-Control-Allow-Headers","X-Requested-With, Content-Type, X-Auth-Token");
    return delegate.call(context);
    }

    }
    }