小编use*_*656的帖子

从浏览器请求时,CORS响应标头在Spray中不起作用

我试图在Spray服务器上实现CORS支持(版本1.1-20131011,其中已经支持cors头).

目前,服务器代码如下所示:

trait DefaultCORSDirectives { this: Directives =>
  def defaultCORSHeaders = respondWithHeaders(
      `Access-Control-Allow-Origin`(AllOrigins),
      `Access-Control-Allow-Methods`(HttpMethods.GET, HttpMethods.POST, HttpMethods.OPTIONS, HttpMethods.DELETE,
      HttpMethods.CONNECT, HttpMethods.DELETE, HttpMethods.HEAD, HttpMethods.PATCH, HttpMethods.PUT, HttpMethods.TRACE),
      `Access-Control-Allow-Headers`("Origin, X-Requested-With, Content-Type, Accept, Accept-Encoding, Accept-Language, Host," +
    " Referer, User-Agent, Overwrite, Destination, Depth, X-Token, X-File-Size, If-Modified-Since, X-File-Name, Cache-Control"),
      `Access-Control-Allow-Credentials`(true),
      `Access-Control-Max-Age`(3600)
    )
}
Run Code Online (Sandbox Code Playgroud)

并像这样使用

  defaultCORSHeaders {
      options {
        complete {
          StatusCodes.OK
        }
      } ~
      post {
        path("path") {
          //response
      }
   }
Run Code Online (Sandbox Code Playgroud)

使用curl时,POST和OPTIONS方法的响应都是预期的.但是,从浏览器,我得到Access不允许使用Access-Control-Allow-Origin(Chrome)或错误415不支持的媒体类型(Firefox),似乎根本不发送POST请求.

请求的jQuery代码如下:

$(document).ready(function () {
        $.post(url,
            {
               'params': "params",
            },
            function (data) {
                //handle response
            } …
Run Code Online (Sandbox Code Playgroud)

jquery scala cors http-options-method spray

6
推荐指数
1
解决办法
2145
查看次数

标签 统计

cors ×1

http-options-method ×1

jquery ×1

scala ×1

spray ×1