当我试图通过管道处理Scala喷雾的请求时,我得到了下面的错误
[play-akka.actor.default-dispatcher-14] INFO application - Pipelining chain request
[WARN] [03/19/2015 11:08:49.115] [application-akka.actor.default-dispatcher-2] [akka://application/user/IO-HTTP/group-0/0] Illegal response header: Illegal 'Access-Control-Allow-Origin' header: Unexpected end of input, expected $timesAccess$minusControl$minusAllow$minusOrigin (line 1, pos 1):
^这里是我提出请求的地方:
val pipeline =
addCredentials(BasicHttpCredentials("API_KEY",
"API_SECRET")) ~> sendReceive
val response: Future[HttpResponse] = pipeline(Post(api,notification))
Logger.info("Pipelining chain request")
response我对Access Control Allow Origin知之甚少。我是否需要在这个请求中添加某种类型的标题才能使其正常工作?
发布于 2015-03-22 00:18:36
错误本身意味着Access-Control-Allow-Origin头没有被正确地解析(参见语法)。这个头非常新,允许使用跨源资源共享。普通Access-Control-Allow-Origin的示例(来自这里):
"Access-Control-Allow-Origin" in {
"Access-Control-Allow-Origin: *" =!= `Access-Control-Allow-Origin`(AllOrigins)
"Access-Control-Allow-Origin: null" =!= `Access-Control-Allow-Origin`(SomeOrigins(Nil))
"Access-Control-Allow-Origin: http://spray.io" =!= `Access-Control-Allow-Origin`(SomeOrigins(Seq("http://spray.io")))
}我可以猜到,你可能会使用一些旧版本的喷雾,它不支持多种来源,或者它可能与这有关。无论如何,只有在请求中指定了Origin头(这意味着CORS初始化)时,服务器才会返回带有此标头的响应,因此应该通过从其中删除Origin头来解决问题。
更新:这是chain.com API的一个bug,您可以使用。如果未指定Origin头,则它们将Access-Control-Allow-Origin: (空字符串)返回给您,因此无法解析:
curl -v https://api.chain.com/v2/notifications -X POST > POST /v2/notifications /1.1>用户代理: curl/7.41.0 >主机: api.chain.com >接受:*/* >< HTTP/1.1 401未授权访问-控制-允许-凭据:真<访问-控制-允许-方法: GET、POST、修补程序、PUT、DELETE、选项、头<访问-控制-允许-来源:<内容-类型:文本/平原;charset=utf-8 < Date: Sun,20153.22 01:38:07 GMT <严格-传输-安全性:最大-年龄=25920000;includeSubDomains <变化:接受-编码
您必须指定一些Origin作为解决办法:
curl -v https://api.chain.com/v2/notifications -X -H -H“-H:http://google.com”> POST /v2/notifications /1.1>用户代理: curl/7.41.0 >主机: api.chain.com >接受:http://google.com < HTTP/1.1 401未经授权的<访问-控制-允许-凭据:真正的<访问-控制-允许-允许-方法: GET、POST、修补程序、PUT、DELETE、选项、头<访问-控制-允许-原产地:http://google.com <内容-类型:文本/平原;charset=utf-8 < Date: Sun,20153.22 01:39:10 GMT <严格-传输-安全性:最大年龄=25920000;includeSubDomains <更改:接受-编码
https://stackoverflow.com/questions/29152247
复制相似问题