前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >留言站开发手记 跨域相关

留言站开发手记 跨域相关

作者头像
HomeboyC
发布2022-09-19 14:38:24
2840
发布2022-09-19 14:38:24
举报
文章被收录于专栏:宅男的天台

nginx 配置

在 api 服务的 nginx 配置中添加以下几行

代码语言:javascript
复制
add_header Access-Control-Allow-Origin $http_origin;
# add_header Access-Control-Allow-Origin "http://wall.study.homeboyc.cn";
add_header Access-Control-Allow-Methods POST,GET,OPTIONS;
add_header Access-Control-Allow-Headers $http_access_control_request_headers;
add_header Access-Control-Allow-Credentials true;

第一行和第二行都是设置允许的源站地址,如果将允许来源设置为 * 的话有些东西浏览器是不发送的,所以我用了小技巧,直接 $http_origin ,变相允许所有来源。你也可以像第二行那样指定源站地址。

第三行允许的方法也一定要设置,不可以直接设置为 * ,理由同上。

最后一行就是允许设置携带 cookies

如果是使用 token 之类的跨域携带信息配置到现在就行了(不敢完全保证),但是如果是要带上 cookies 请继续向下看

PHP 配置 SameSite cookie

本地请求带cookies

image-20210403014637634
image-20210403014637634

部署到生产环境:

image-20210403014718221
image-20210403014718221

设置cookie不生效,这是 chrome 的新特性

涉及SameSite cookie

https://php.watch/articles/PHP-Samesite-cookies

这里不讲 php 7.3之前的修复方式,有点hack,可以考虑配置 nginx 给 cookie 做个替换,也可从 php 程序入手

下面是 php 7.3及之后版本的解决方法

设置php配置文件.user.ini:

代码语言:javascript
复制
session.cookie_secure = On
session.cookie_samesite = Lax

最后一行的 Lax 也可以是 ”None“ (具体区别不讲,请自行查阅 php 官方文档,如果说错了,不负责)

Back to posts

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • nginx 配置
  • PHP 配置 SameSite cookie
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档