gpt4 book ai didi

scala - Play 框架 CORS header

转载 作者:行者123 更新时间:2023-12-03 17:43:45 25 4
gpt4 key购买 nike

我正在尝试为我的 Play Framework 应用程序设置 CORS header 。具体来说,我收到此错误

cannot load http://127.0.0.1:9000/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9000' is therefore not allowed access.

我想我可以按照以下说明轻松处理此问题:
https://www.playframework.com/documentation/2.5.x/CorsFilter

然而,这样做之后。什么也没有变。
curl -I localhost:9000/
HTTP/1.1 200 OK
Content-Length: 4540
Content-Type: text/html; charset=utf-8
Date: Mon, 11 Jul 2016 20:03:33 GMT

我的配置是:
play.http.filters = "global.Filters"

play.filters.cors {
allowedOrigins = ["http://www.example.com", "*"]
allowedHttpMethods = ["GET", "POST"]
allowedHttpHeaders = ["Accept"]
}

我的 Filters.scala 文件是:
package global

import javax.inject.Inject
import play.api.http.DefaultHttpFilters
import play.filters.cors.CORSFilter

class Filters @Inject() (corsFilter: CORSFilter)
extends DefaultHttpFilters(corsFilter)

如果有人能告诉我为什么过滤器似乎没有应用于响应,那就太好了。

最佳答案

Play 过滤器很诱人,但是当它们没有按预期工作时,正如您所注意到的,魔术并不是那么容易追踪。

我更喜欢使用这样的东西:

implicit class RichResult (result: Result) {
def enableCors = result.withHeaders(
"Access-Control-Allow-Origin" -> "*"
, "Access-Control-Allow-Methods" -> "OPTIONS, GET, POST, PUT, DELETE, HEAD" // OPTIONS for pre-flight
, "Access-Control-Allow-Headers" -> "Accept, Content-Type, Origin, X-Json, X-Prototype-Version, X-Requested-With" //, "X-My-NonStd-Option"
, "Access-Control-Allow-Credentials" -> "true"
)
}

然后你可以在你的响应中轻松调用它,如下所示:
Ok(Json.obj("ok" -> "1")).enableCors

很容易理解,可以放在你想启用CORS的地方,而且很容易调试!

关于scala - Play 框架 CORS header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38315501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com