Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >曲奇不发送交叉来源的反应瓶应用程序

曲奇不发送交叉来源的反应瓶应用程序
EN

Stack Overflow用户
提问于 2021-07-31 11:54:19
回答 1查看 415关注 0票数 0

我目前正在构建一个ReactJS (前端在"https://www.example.com")瓶(后"https://server.example.com")应用程序。react客户端向我的烧瓶服务器发出GET和POST请求,但首先,必须对请求进行身份验证。我使用https://www.example.com"-CORS只接受来自"CORS_SUPPORTS_CREDENTIALS“的请求。我在服务器上启用了”CORS_SUPPORTS_CREDENTIALS“,而在客户端,我将获取请求设置为”凭据:‘包括’“。

server.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import os
import functools
from flask import Flask, Blueprint, request, make_response
from flask_cors import CORS
from .config import Config

# Application factory pattern
def create_app():
    config_object = Config()
    app = Flask(__name__)

    # Cross-Origin Config
    CORS(app,
        origins=[config_object.CORS_ALLOW_ORIGIN], # https://www.example.com
        supports_credentials=config_object.CORS_SUPPORTS_CREDENTIALS # True
    )
    app.config.from_object(config_object)

    app.register_blueprint(main)
    return app

# Cookie authentication
def auth_required(view):
    @functools.wraps(view)
    def wrapped_view(**kwargs):
        user_cookie = request.cookies.get('USER_ID_COOKIE')
        session_cookie = request.cookies.get('USER_SESSION_COOKIE')
        is_authenticated = verify_user_session(user_cookie, session_cookie) # T/F if this is a valid user

        if is_authenticated:
            # Continue to route...
            return view(**kwargs)
        else:
            # Reject request...
            response = make_response({"flash": "User not logged in."}, 403)
            return response
    return wrapped_view

bp = Blueprint('main', __name__)

@bp.get('/main/protected')
@auth_required
def get_protected_data():
    response = make_response({"fakeData": "Do you believe in life after love?"}, 200)
    return response

app = create_app()

if __name__ == "__main__":
    app.run()

snippet_from_protected_client.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const MainPage = ({ setFlashMessages }) => {
  let statusOK;
  let statusCode;

  const isStatusOK = (res) => {
    statusOK = res.ok;
    statusCode = res.status;
    return res.json();
  }

  const [data, setData] = useState(null);

  useEffect(() => {
    fetch(process.env.REACT_APP_SERVER + '/main/protected', { // REACT_APP_SERVER=https://server.example.com
      credentials: 'include'
    })
    .then(isStatusOK)
    .then(data => {
      if (statusOK) {
        setData(data.fakeData);
      } else if (statusCode === 403) {
        setFlashMessages(data.flash);
      }
    });
  }, []);

  return (
    <main>
      <div className="container-md">
        <div className="row">
          <div className="col-md-1"></div>
          <div className="col-md-11 mt-5">
            <h1 className="text-start">My Account</h1>
            <p className="text-start">Just some filler text here.</p>
            <p className="text-start">{ data }</p>
          </div>
        </div>
      </div>
    </main>
  );
}

export default MainPage;

希望你能理解我的想法--我已经删减了很多,但保留了主要的功能,这给了我这个问题。所以现在,问题是:

我的cookie已经创建并保存在浏览器中,它是用JS库js-cookie设置的,如下所示:

snippet_from_login_client.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Cookies.set('USER_ID_COOKIE', '1', { sameSite: 'none', secure: true}) // again, example
Cookies.set('USER_SESSION_COOKIE', 'ARanDomStrInGSetDURingLoGiNANDSTOrEDinTHESERVERDB', { sameSite: 'none', secure: true}) // again, example

我知道它们已经设置好了,因为我可以在开发工具中看到它们。但是,在随后对受保护路由的请求中,服务器接受请求(这意味着它不是CORS源问题),但是@auth_required抛出403 (如上面所示)。在检查我的浏览器开发工具中的请求头之后,我可以看到请求没有随cookie一起发送!

从浏览器开发工具请求标头

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
* Accept: */*
* Accept-Encoding: gzip, deflate, br
* Accept-Language: en-US,en;q=0.9
* Connection: keep-alive
* Host: server.example.com
* Origin: https://www.example.com
* Referer: https://www.example.com/
* Sec-Fetch-Dest: empty
* Sec-Fetch-Mode: cors
* Sec-Fetch-Site: cross-site
* Sec-GPC: 1
* User-Agent: *DEVICE-DATA*

注意没有Cookie: --头,尽管设置了cookies .

为什么我的饼干不送?任何提示或线索都是非常有用的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-01 02:49:57

我解决了问题!我应该将我的cookie域设置为“.example.com”,以便客户端将它们附加到每个请求中。下面是如何使用js-cookie实现的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Cookies.set('USER_ID_COOKIE', '1', { domain: '.example.com', sameSite: 'none', secure: true}) // again, example

我不知道如何在不相关的域之间发送cookie,但是如果您的服务器和客户端被格式化为'server.domain.com‘和'client.domain.com',那么这个解决方案应该适用于您。希望这能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68605420

复制
相关文章
人类血液中首次发现微塑料颗粒,饮料瓶塑料袋化妆品都是来源
梦晨 萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 塑料不光污染环境,最终也污染了人类自己。 一则人类血液中首次发现微塑料的消息引发网友热议,一度登上知乎热榜第3,微博阅读量更是达到2.4亿。 这项最新研究来自荷兰阿姆斯特丹自由大学、荷兰三角洲研究院,是环境领域的顶尖研究机构。 科学家们收集了22个志愿者提供的血液样本,其中有77%发现了微塑料颗粒,平均浓度为每毫升1.6微克。 这成为塑料进入人体全身血液循环的首个量化证据,其中光是可量化检测到的塑料就有三种。 50%的人体内含有PET(聚对苯二甲
量子位
2022/03/28
2580
19.16 不发邮件的问题处理
不发邮件的问题处理 因为虚拟机,可能存在一些bug,第一次配置的时候,经常会出现zabbix发现问题,做了邮件告警,但是邮箱却没有收到邮件的问题; 重新恢复快照以后再做一次,就又能正常发送邮件,接收邮件了 配置邮件告警总结 到 163邮箱或 QQ邮箱 开启SMTP服务,并记录授权码,没有开启,脚本里面就无法去写密码 设置邮件告警 首先设置一个报警媒介; 三个参数必须填写正确,顺序也不能错误 编辑邮件告警脚本,脚本地址 /usr/lib/zabbix/alertscripts目录下 路径不能错误,必须在这个路
运维小白
2018/02/07
7740
透明产品瓶身拍摄
以柔光方式表现产品质感。 第一步是支撑。透明产品容易反射其他不需要的物品,所以拍摄前需要排除干扰因素,我们用纸盒、亚克力支撑架、水晶块等支撑产品,让产品远离底部的桌子,这样产品身上不会出现下面桌子的反光。拍摄这类有高反光面的产品时要戴上手套,这样不会在产品上留下指纹,才能拍出满意的图片。 灯光方位,左右夹光提供主体照片,顶光提升产品氛围,背光打出产品的通透感。但是,灯光的位置与距离需要不停的试探,才能给出一个合适的效果。 如上一步所说,灯前柔光纸也需要细致的移动,一边移动,一边观察瓶身光感的变化
ORBITVU_欧保图
2023/03/21
3660
透明产品瓶身拍摄
crontab 不发送邮件了, why ?
crontab 任务运行时,/var/spool/mail/root 之前一直会有相应的 mail 邮件生成,邮件中详细记录了 crontab 任务的基本信息、执行时间、执行结果、报错等信息,可以说非常的有用。但是不知道为什么1月7日之后没有新的邮件生成了,最后一条邮件记录正好是 crontab 命令执行失败的消息,不由得心中一惊,以为是这条执行失败的 crontab 命令把 crontab 给卡住了,急忙进行测试,发现 crontab 是可以正常执行的,只是不知道为什么不发送邮件了。
披头
2022/08/22
1.2K0
crontab 不发送邮件了, why ?
超卖 100 瓶茅台的事故分析
本篇文章主要是基于我们实际项目中因为redis分布式锁造成的事故分析及解决方案。我们项目中的抢购订单采用的是分布式锁来解决的,有一次,运营做了一个飞天茅台的抢购活动,库存100瓶,但是却超卖了100瓶!要知道,这个地球上飞天茅台的稀缺性啊!!!
程序猿DD
2020/12/18
7220
用10只老鼠找出1千瓶水中的1瓶毒药(附 JS 实现)
条件:现在有1千瓶水,其中有1瓶是毒药。不能通过外观和气味等外在特征来区分毒药和水。老鼠吃了毒药或毒药和水的混合体后,1周会死亡。
前端GoGoGo
2018/08/24
1.5K0
超卖 100 瓶茅台的事故分析
本篇文章主要是基于我们实际项目中因为redis分布式锁造成的事故分析及解决方案。我们项目中的抢购订单采用的是分布式锁来解决的,有一次,运营做了一个飞天茅台的抢购活动,库存100瓶,但是却超卖了100瓶!要知道,这个地球上飞天茅台的稀缺性啊!!!
Spark学习技巧
2021/03/05
3860
超卖 100 瓶茅台的事故分析
本篇文章主要是基于我们实际项目中因为redis分布式锁造成的事故分析及解决方案。我们项目中的抢购订单采用的是分布式锁来解决的,有一次,运营做了一个飞天茅台的抢购活动,库存100瓶,但是却超卖了100瓶!要知道,这个地球上飞天茅台的稀缺性啊!!!
Java旅途
2020/12/18
4410
为什么我们不发展汉化的编程语言?
从事嵌入式的软件开发十几年,个人的一种感觉是稍微有点英语水平的人就能从事软件开发,但是要达到高手的水准英语还是不可或缺的,其实在编程过程中英语更多是表现在翻阅国外原汁原味的文档,英文不过关的情况下很难看明白,至于在编程的过程中的英文关键字影响其实很小,无论是英文还是中文关键字用的次数多了也就记住了,从理论上讲不懂英文的人也是可以从事编程代码的学习,但是要成为真正意义上的高手还是显得吃力一些,要比通常意义上的程序员要费劲而且在概率上也会小一些,毕竟如果英文不达标可能就是学历层面的问题,影响的不仅仅是英文可能还会有数学基础。
程序员互动联盟
2020/04/03
1.2K2
吞了1000瓶老干妈的南山头铁鹅,Python制作千图成像(附上源代码和应用程序)
最近的瓜可谓真有意思,南山头铁鹅也默默吞下下了1000瓶老干妈。此时用这张1000张老干妈辣椒酱图片组成的企鹅来表达最适合不过了
行哥玩Python
2020/07/14
8200
吞了1000瓶老干妈的南山头铁鹅,Python制作千图成像(附上源代码和应用程序)
【GPLT】L2-032 彩虹瓶
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
喜欢ctrl的cxk
2019/11/08
5180
【GPLT】L2-032 彩虹瓶
AI安全 | 给中文 AI 的100瓶毒药
当人类凝视AI时,AI也在凝视人类。网络安全永远是AI大模型大规模应用及演进过程中不可忽视的核心点。
FB客服
2023/08/08
5270
AI安全 | 给中文 AI 的100瓶毒药
Python来源介绍
1989年的圣诞节,一位来自荷兰,名叫Guidio van Rossum的年轻帅小伙子,为了打发无趣的时光,决定改善他参与设计,不是很满意的ABC语言,随着研究的深入和功能的完善,其特性超越了ABC。在给这个新的脚本语言命名时,他想起了喜爱的Monty Pythoh喜剧团体,于是取名为:Python。 通过这个故事,终于知道咱们为什么发明不了一门编程语言了,对,那是因为我们无论在什么节假日,都没有无聊过,而且还丰富多彩。 历经两年后,也就是在1991年2月份时,Python终于面向大众,发布了第一个公开版本,其版本号为0.9.0。它使用C语言开发实现,支持类、函数、异常处理,还有列表、字典等数据结构。
贾维斯Echo
2023/10/18
2540
Python来源介绍
克莱因瓶莫比乌斯带_克莱因瓶剪莫比乌斯带
在1882 年,著名数学家菲立克斯·克莱因(Felix Klein) 发现了后来以他的名字命名的著名“瓶子”。这是一个象球面那样封闭的(也就是说没有边)曲面,但是它却只有一个面。在图片上我们看到,克莱因瓶的确就象是一个瓶子。但是它没有瓶底,它的瓶颈被拉长,然后似乎是穿过了瓶壁,最后瓶颈和瓶底圈连在了一起。如果瓶颈不穿过瓶壁而从另一边和瓶底圈相连的话,我们就会得到一个轮胎面。  
全栈程序员站长
2022/09/30
3300
CCF考试——201709-1打酱油
  小明带着N元钱去买酱油。酱油10块钱一瓶,商家进行促销,每买3瓶送1瓶,或者每买5瓶送2瓶。请问小明最多可以得到多少瓶酱油。
AI那点小事
2020/04/20
3250
在线识别图片来源原理 选择好的在线识别图片来源程序
如今已是数字化时代,彩色的图片越来越多的图片进入到日常生活中。有很多的时候,大家可能会并不清楚一张图片的来源,这就需要用到一些在线识别图片来源的程序。那么在线识别图片的来源的程序是如何工作的?在众多的识别程序中,如何去选择好的识别程序呢?项目就来为大家简单介绍一下。
用户8739990
2021/07/23
18.8K0
在线识别图片来源原理 选择好的在线识别图片来源程序
kfold交叉验证好处_sklearn交叉验证
运用Kfold交叉验证时,在一个限度内k的值越大越好。因为k越大我们验证的次数就越多,最后取出来的平均数越能代表训练模型的准确度。
全栈程序员站长
2022/09/28
9220
2-9 彩虹瓶 (20 分)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
韩旭051
2019/11/08
7210
点击加载更多

相似问题

重装时取出的曲奇-反应和瓶

13

瓶置曲奇

20

瓶的交叉来源问题(访问-控制-允许-原产地)

13

NSURLRequest不发送曲奇

20

不发送以前请求的曲奇- bug?

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文