CorsPlug
An Elixir Plug to add CORS.
Usage
-
Add this plug to your
mix.exsdependencies:
def deps do
# ...
{:cors_plug, "~> 0.1.1"},
#...
endUse 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
endConfiguration
This plug will return the following headers:
On preflight (OPTIONS) requests:
- Access-Control-Allow-Origin
- Access-Control-Allow-Credentials
- Access-Control-Max-Age
- Access-Control-Allow-Headers
- Access-Control-Allow-Methods
On GET, POST, ... requests:
- Access-Control-Allow-Origin
- Access-Control-Allow-Credentials
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.0Unless 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.