akka-http使用CORS(跨域资源共享)实现跨域请求
2017-04-14 10:24
1161 查看
我们平时在开发过程中经常用到前后端分离,当前端喝后台分别部署的时候则会存在跨域问题(协议,ip,端口中任一个不同),常用的方法有使用jsonp跨域(只支持get请求),或者使用nginx反向代理等。这里介绍cors(跨域资源共享)方法。
其中通过Access-Control-Allow-Origin指定接收跨域的地址,Access-Control-Allow-Methods表明服务器可以接受POST, GET和OPTIONS的请求方法,Access-Control-Allow-Headers表示服务器可接受自定义头X-PINGOTHER,Access-Control-Max-Age代表有效时间。
具体实现如下:
在build.sbt中添加依赖,
github地址:https://github.com/lomigmegard/akka-http-cors
代码中
指定特定网址的话
简介
跨源资源共享标准通过新增一系列 HTTP 头,让服务器能声明哪些来源可以通过浏览器访问该服务器上的资源。另外,对那些会对服务器数据造成破坏性影响的 HTTP 请求方法(特别是 GET 以外的 HTTP 方法,或者搭配某些MIME类型的POST请求),标准强烈要求浏览器必须先以 OPTIONS 请求方式发送一个预请求(preflight request),从而获知服务器端对跨源请求所支持 HTTP 方法。在确认服务器允许该跨源请求的情况下,以实际的 HTTP 请求方法发送那个真正的请求。服务器端也可以通知客户端,是不是需要随同请求一起发送信用信息(包括 Cookies 和 HTTP 认证相关数据)CORS在akka-http中的使用
服务器在接收请求之后会在响应头中添加如下信息Access-Control-Allow-Origin: http://wangchunze.top Access-Control-Allow-Methods: POST, GET, OPTIONS Access-Control-Allow-Headers: X-PINGOTHER Access-Control-Max-Age: 1728000
其中通过Access-Control-Allow-Origin指定接收跨域的地址,Access-Control-Allow-Methods表明服务器可以接受POST, GET和OPTIONS的请求方法,Access-Control-Allow-Headers表示服务器可接受自定义头X-PINGOTHER,Access-Control-Max-Age代表有效时间。
具体实现如下:
在build.sbt中添加依赖,
github地址:https://github.com/lomigmegard/akka-http-cors
libraryDependencies += "ch.megard" %% "akka-http-cors" % "0.2.1"
代码中
import ch.megard.akka.http.cors.scaladsl.CorsDirectives._ import ch.megard.akka.http.cors.scaladsl.settings.CorsSettings trait OrderService{ private val settings = CorsSettings.defaultSettings.copy( allowedOrigins = HttpOriginRange.* ) val createOrder = (path("create") & post & pathEndOrSingleSlash&cors(settings)){ complete("") } }
指定特定网址的话
private val settings = CorsSettings.defaultSettings.copy( allowedOrigins = HttpOriginRange(HttpOrigin("http://example.com")))
相关文章推荐
- 使用CORS(跨站资源共享Cross-Origin Resource Sharing) 来实现跨域访问
- 跨域资源共享(Cross-Origin Resource Sharing)实现Ajax跨域请求
- [转]跨域资源共享(Cross-Origin Resource Sharing)实现Ajax跨域请求
- 浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
- Spring MVC 实现跨域资源 CORS 请求
- 跨域资源共享(Cross-Origin Resource Sharing)实现Ajax跨域请求
- 在ASP.NET Web API中实现CORS(跨域资源共享)
- 跨域资源共享 CORS 实现思路
- 使用Jquery的getJSON跨域请求蘑菇街图片资源实现瀑布流
- 跨域资源共享CORS以及在zepto中使用遇到的问题
- 跨域资源共享(CORS)在ASP.NET Web API中是如何实现的?
- 跨域资源共享(CORS)在ASP.NET Web API中是如何实现的?
- Spring MVC 实现跨域资源 CORS 请求
- 在ASP.NET Web API中实现CORS(跨域资源共享)
- 使用CORS实现JavaWeb跨域请求问题的方法
- 从零开始学 Java - Spring MVC 实现跨域资源 CORS 请求
- AJAX跨域请求和CORS跨域资源共享
- 跨域问题 XHR实现跨域资源共享(CORS)
- java web项目使用CORS方法实现跨域请求方案
- Spring boot通过过滤器使用CORS实现JavaWeb跨域请求