Playframework 2.8 setSession 适用于 Postman,但不适用于浏览器
Playframework 2.8 setSession works on Postman, but not on browser
我一直致力于 Scala Playframework 2.8 上的 api 项目。
在 Postman 上似乎一切正常,但是当尝试将它连接到我的前端项目时,.withSession
没有在浏览器中创建任何 cookie,尽管它在 Postman 中创建了一个。
我认为它与 api 的 application.conf
上的 csrf
和 cors
定义有关,但我已经对其进行了很多编辑,但什么也没有有效。
我没有收到任何错误,只是没有在客户端中设置会话,所以我无法让任何人登录 api :\
我正在分享我的 application.conf
代码:
# https://www.playframework.com/documentation/latest/Configuration
# Default database configuration using MySQL database engine
# Connect to playdb as playdbuser
db.default.driver=com.mysql.jdbc.Driver
db.default.url="blabla"
db.default.username="blalba"
db.default.password="blabla"
play.http.session.secure = false
play.http.session.cookieName = "PLAY_SESSION"
play.http.session.httpOnly = true
play.filters.disabled+=play.filters.csrf.CSRFFilter
play.cache.bindCaches = ["db-cache"]
play.filters.hosts {
allowed = ["."]
}
play.filters.enabled += "play.filters.cors.CORSFilter"
play.filters.cors {
allowedHttpMethods = ["GET", "HEAD", "POST", "PUT", "OPTIONS"]
allowedHttpHeaders = ["Accept", "Content-Type"]
}
play.http.secret.key = "blablabla"
任何人都知道为什么浏览器阻止我从 Scala playframework 2.8 创建会话 api?
知道了。 (我觉得很愚蠢:/)
问题不在于后端,Play 按预期工作。
问题出在前端 (react.js)。
一旦我将 credentials: 'include'
添加到 fetch 调用中,它就起作用了。
由于@cbley 的回复,开始意识到问题不在后端,非常感谢。
我一直致力于 Scala Playframework 2.8 上的 api 项目。
在 Postman 上似乎一切正常,但是当尝试将它连接到我的前端项目时,.withSession
没有在浏览器中创建任何 cookie,尽管它在 Postman 中创建了一个。
我认为它与 api 的 application.conf
上的 csrf
和 cors
定义有关,但我已经对其进行了很多编辑,但什么也没有有效。
我没有收到任何错误,只是没有在客户端中设置会话,所以我无法让任何人登录 api :\
我正在分享我的 application.conf
代码:
# https://www.playframework.com/documentation/latest/Configuration
# Default database configuration using MySQL database engine
# Connect to playdb as playdbuser
db.default.driver=com.mysql.jdbc.Driver
db.default.url="blabla"
db.default.username="blalba"
db.default.password="blabla"
play.http.session.secure = false
play.http.session.cookieName = "PLAY_SESSION"
play.http.session.httpOnly = true
play.filters.disabled+=play.filters.csrf.CSRFFilter
play.cache.bindCaches = ["db-cache"]
play.filters.hosts {
allowed = ["."]
}
play.filters.enabled += "play.filters.cors.CORSFilter"
play.filters.cors {
allowedHttpMethods = ["GET", "HEAD", "POST", "PUT", "OPTIONS"]
allowedHttpHeaders = ["Accept", "Content-Type"]
}
play.http.secret.key = "blablabla"
任何人都知道为什么浏览器阻止我从 Scala playframework 2.8 创建会话 api?
知道了。 (我觉得很愚蠢:/) 问题不在于后端,Play 按预期工作。 问题出在前端 (react.js)。
一旦我将 credentials: 'include'
添加到 fetch 调用中,它就起作用了。
由于@cbley 的回复,开始意识到问题不在后端,非常感谢。