如何解决Cookie未正确存储在ios模拟器中
我在移动应用程序中使用Flask,flask-jwt-extended和React-native(带有Expo)。当我使用网络浏览器模拟或Postman时,我的所有cookie均已正确设置。 但是,当我从Xcode使用ios模拟器时,没有存储任何cookie。
Environment:
Flask Backend: 127.0.0.1:5000
React-Native Front: 127.0.0.1:19006
这是我的Flask配置:
JWT_SECRET_KEY = os.getenv("JWT_SECRET_KEY",'local-secret')
JWT_TOKEN_LOCATION = ['cookies']
JWT_ACCESS_TOKEN_EXPIRES = datetime.timedelta(seconds=1800)
JWT_COOKIE_SECURE = False
CORS_HEADERS = "Content-Type"
JWT_REFRESH_TOKEN_EXPIRES = datetime.timedelta(days=15)
JWT_COOKIE_CSRF_PROTECT = True # set_refresh_cookies() will now also set the non-httponly CSRF cookies
JWT_CSRF_CHECK_FORM = True
JWT_ACCESS_CSRF_HEADER_NAME = "X-CSRF-TOKEN-ACCESS"
JWT_REFRESH_CSRF_HEADER_NAME = "X-CSRF-TOKEN-REFRESH"
SSL_REDIRECT = False
jwt = JWTManager()
app = Flask(__name__)
app.config.from_object(APP_CONFIG[CONFIG_ENV])
cors = CORS(app,resources={r"/*": {"origins": "http://127.0.0.1:19006"}},supports_credentials=True)
APP_CONFIG[CONFIG_ENV].init_app(app)
jwt.init_app(app)
这是我存储cookie(经典方法,并与邮递员或普通网络浏览器一起使用)的方式:
access_token = create_access_token(identity = token_identity)
refresh_token = create_refresh_token(identity = token_identity)
resp = jsonify({"access_token": access_token,"refresh_token": refresh_token})
set_access_cookies(resp,access_token)
set_refresh_cookies(resp,refresh_token)
这是我使用“提取”库提出请求的方式:
let response = await fetch(URL + "/login",{
body: form_data,method: "post",credentials: "include",})
但是,每当我将带有响应本机的ios Simulator(127.0.0.1:19006)用于请求时,就永远不会存储cookie。有什么想法可以解决问题吗?
解决方法
希望这可以帮助您节省时间。
当我使用经典浏览器访问“ http://127.0.0.1:19006”时,我在设备上使用了以下域:“ http://192.168.0.13:19006”。但是,仅添加此域还不够。我还添加了在域中添加“ http://192.168.0.13”。我不太清楚为什么,但是现在可以了:缓存在我的设备上正常工作。
这是我修改的代码行:
cors = CORS(app,resources={"/*": {"origins": ["http://127.0.0.1:19006","http://192.168.0.13:19006","http://192.168.0.13"]}},supports_credentials=True)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。