gpt4 book ai didi

jsonp - 为什么CORS是基于目标服务器的?为什么我必须使用 JSONP?

转载 作者:行者123 更新时间:2023-12-04 05:30:55 27 4
gpt4 key购买 nike

如果可能的话,我想在答案中举一个具体的例子。

为了解释起见,我们这里有三个玩家。

  • 我的服务器 (myserver.com)
  • 客户端服务器 (myclient.com)
  • 客户用户(通过 myclient.com 访问数据)

  • 我正在为我的客户提供一个 Web 服务,允许他们以 JSON 格式检索他们的数据。为了让他们的网站正常工作,他们必须使用标准的 XOR 解决方法——要么在服务器端发出请求,要么依靠我来设置
    Access-Control-Allow-Origin: http://myclient.com

    所以这里有两部分问题。首先,为什么要在 myserver.com 设置源策略?为什么我的服务器关心它向谁提供内容?不应该是 myclient.com 设置这个吗?这里的具体例子会很棒。

    第二部分,我知道 JSONP 可以解决这个问题,但我担心使用它,因为我不了解第一部分的安全含义。如果我可以设置 Access-Control-Allow-Origin: *,那么 JSONP 的意义何在? ?

    最佳答案

    很多问题!

  • 如果您打算提供特定于用户的内容,JSONP 绝对是危险的。如果服务器提供的内容是完全公开的,并且(可能)是只读的,那么 JSONP 是一个明智的选择。不要将它用于任何假设“登录状态”或身份验证/授权的事情。
  • CORS 绝对比 JSONP 好得多,但并非所有(旧版)浏览器都支持它。如果您想尽可能多地支持,您将需要某种回退。 CORS 允许您执行 GET 以外的请求,这极大地提高了灵 active 。
  • 目标服务器需要允许这样做的原因,主要是因为在域 A 上运行的 javascript 不应该能够访问域 B。如果域 A 可以“允许”这样做,则意味着您可以创建可以访问沙箱的 javascript 应用程序任何公共(public)服务器。只有域 B 的所有者才能明确允许域 A 的所有者访问其内容。
  • 您的论点(为什么域 B 关心谁访问他们的资源)通常是有效的。但这不是保护域 B,而是保护最终用户。未经明确许可,不应允许域 A 代表最终用户对域 B 执行请求。

  • 并且可以肯定的是:除非您非常了解 JSONP 的安全含义,否则 CORS 可能是一个更安全的选择。

    关于jsonp - 为什么CORS是基于目标服务器的?为什么我必须使用 JSONP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12641831/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com