我在heroku中托管了一个flask应用程序,它作为iframe嵌入到我的网站之一。
假设a.com
将此<heroku_url>.com
渲染为iframe。
当用户访问a.com
时,将呈现<heroku_url>.com
并创建会话。
from flask import session, make_response
@app.route("/")
def index():
session['foo'] = 'bar'
response = make_response("setting cookie")
response.headers.add('Set-Cookie', 'cross-site-cookie=bar; SameSite=None; Secure')
return response
在Chrome开发工具中,我看到Cookie被阻止了。虽然在Firefox中工作正常。 我是否正确设置了Cookie? 我了解这是由于chrome80更新造成的,但不确定解决方法
答案 0 :(得分:0)
您可以通过检查位于https://samesite-sandbox.glitch.me/的测试站点来检查您的浏览器是否按预期处理了cookie。
如果所有行都包含绿色对勾(✔️),则说明cookie可能存在某种问题,我建议检查DevTools中的“问题”选项卡和“网络”选项卡以确认android:requestLegacyExternalStorage="true"
标头中确实包含应该是什么。
如果测试站点上有红色或橙色的十字(✘),则说明浏览器中的某些内容正在影响Cookie。检查您是否没有阻止第三方Cookie(<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.app.www.app">
<application
android:name="io.flutter.app.FlutterApplication"
android:label="finosellapp"
android:requestLegacyExternalStorage="true"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
</manifest>
)或运行可能执行类似操作的扩展程序。
答案 1 :(得分:0)
在会话cookie中将samesite
属性设置为None
似乎已经解决了问题。
必须更新werkzeug
(烧瓶包装的WSGI Web应用程序库)并更新会话cookie。
即
app.config['SESSION_COOKIE_SAMESITE'] = 'None'
app.config['SESSION_COOKIE_SECURE'] = True
但是,这也取决于用户在“ chrome:// settings / cookies”中的偏好。
即使选择了以下选项之一,即使samesite
设置为“无”,Chrome也会阻止会话Cookie