CorsPlug

Build Status

An Elixir Plug to add CORS.

Usage

  1. Add this plug to your mix.exs dependencies:
def deps do
  # ...
  {:cors_plug, "~> 0.1.1"},
  #...
end

Use it in a phoenix pipeline (or wherever):

pipeline :api do
  plug CORSPlug
  super
end

It should be noted that Phoenix pipelines are only invoked for matched routes, so you will need to add options routes for your API endpoints. Leaving this out will cause the plug to not be called and the response will be a 404.

scope "/api", PhoenixApp do
  pipe_through :api

  resources "/articles", ArticleController
  options   "/articles", ArticleController, :options
  options   "/articles/:id", ArticleController, :options
end

Configuration

This plug will return the following headers:

On preflight (OPTIONS) requests:

On GET, POST, ... requests:

You can configure the value of these headers as follows:

plug CORSPlug, [origin: "example.com"]

Please find the list of current defaults in cors_plug.ex.

License

Copyright 2014 Michael Schaefermeyer

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.