当前位置: 首页 > 知识库问答 >
问题:

获取API;如果响应是不透明的,为什么要使用“no-cors”模式?

齐财
2023-03-14

我读了这个问题和这个问题。前者只解释“无源”与“同源”;后者建议“no-cors”不有用,因为响应不透明(Javascript无法读取/执行任何有用的操作):

有人能告诉我们,在这些“有限的情况”中,我们想要使用“no-cors”的例子是什么吗(尽管反应是不透明的?)

我能想到的唯一情况是一种单向交流;如果客户机向服务器发送GET或POST就足够了,那么服务器就可以跟踪请求的发生;(例如,增加请求计数器);...

...那么反应是一个不透明的就足够了;也就是说,客户机只需要知道请求是否成功(状态200),而不期望任何有效负载响应。

共有1个答案

蓝星辰
2023-03-14

请记住,CORS设置并不阻止请求到达服务器--这就是身份验证和CSRF的作用。相反,它防止页面读取响应。请求仍然是:

  1. 从页面发送,
  2. 浏览器添加起源标头,
  3. 它仍然由服务器处理(通常-CORS与此无关,尽管可能有其他安全措施),
  4. ,当返回时,浏览器检查响应头是否为access-control-allog-origin。如果它与浏览器认为的匹配,则浏览器允许页面查看请求的结果。

这是密钥同源策略,CORS设置禁止合作浏览器中的页面看到响应。

    null
    null

CORS做上述工作。它不执行以下操作:

  • 阻止服务器处理请求-这就是身份验证和CSRF预防的作用。
  • 停止欺骗Origin标头--这只适用于协作浏览器。作为攻击者,您通常无法访问用户正在使用的浏览器。由于标头可以被欺骗,服务器不应该使用其中的数据以确保安全。(这就是为什么当通过curl/postman/insomnia这样的工具测试浏览器API时,您需要检查CORS头是否通过,因为它们接受所有响应,并且CORS策略从未应用。)
 类似资料:
  • 当使用JavaScript读取API从服务器请求时,您必须执行以下操作 这里,

  • 什么都试过了,但是没有得到回应!我找不到我错在哪里! 我在处理抓取请求时遇到问题。它完全不能与FLASK本地主机正常工作。我放了一个简单的get请求,但我得到的只是在控制台上登录时的不透明响应。不过,只需在 api endpoint上,我就能够看到响应。 。py(flask localhost) 下面是html的代码,它使用fetch api请求数据 如有任何建议,将不胜感激。P、 对不起,我是新

  • 我刚刚开始学习获取API:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch 下面是我编写的一段代码片段,用于修补: 我希望从响应中得到一个JSON对象。json()。 与使用JSON时得到的类似。parse()。 相反,我得到了一个promise对象。 如果我像这里所示的那样扩大promise链... ..

  • 问题内容: 在Swing中,JPanel表示是不透明的,这意味着什么? 还有JPanel VS JComponent与不透明相比如何? 请尽可能简单地解释一下,因此我在GUI编程方面不是很有经验。 在此先感谢您的帮助 问题答案: Opaque在Swing中具有非常特殊的含义-这意味着该组件在其边界内完全绘制了整个区域(请参见setOpaque javadoc ) 这主要用于确定是否有必要在当前组件

  • 嗨,我不知道我做错了什么。I有一个字符串作为参数传递给my类。我必须拆分该字符串并将相应的值赋给成员变量,但它不能正常工作。 这是我的课。 我的输入=Apple$$##12.5$$##9 我犯错了-

  • 在C 14中,关联容器似乎从C 11-[associative.reqmts]/13改为: 成员函数模板、、、和不得参与重载解析,除非类型。 让一个比较国“透明”的目的是什么? C 14还提供如下库模板: 例如,