【问题标题】:How to disable CORS checks for a specific source page如何禁用特定源页面的 CORS 检查
【发布时间】:2020-06-28 09:23:54
【问题描述】:

我的网络应用程序(我们称之为页面 A)通过 XmlHttpRequests 从另一台服务器(称之为 B)获取数据。

服务器 B 在不同的域上运行,所以我们这里有一个跨域请求的情况。

问题在于服务器 B 或特别是查询的 API 尚未(尚未)启用 CORS。所以来自我的网络应用程序的请求失败:

是否可以对来自我的源页面 A 的请求禁用 CORS 策略检查?

更新:我无法控制服务器 B,只有页面 A。

【问题讨论】:

  • 在页面A的服务器上添加一个服务,让它调用服务器B的服务怎么样?
  • 您发布的控制台日志是由浏览器写入的。浏览器阻止对原始域以外的访问。您可以检查网络部分是否启动了服务器调用。有一些插件会禁用此安全功能并让您从其他服务器调用服务。

标签: http cross-domain


【解决方案1】:

如果您有apache server,请修改服务器 htaccess 文件

Header add Access-Control-Allow-Origin "*"

【讨论】:

    【解决方案2】:

    您可以执行以下实现来避免这种情况:
    允许一切:可能不是你想要的

    Header set Access-Control-Allow-Origin: *
    


    Header set Access-Control-Allow-Origin: [SCHEME]://[HOST]:[PORT_OPTIONAL]
    

    【讨论】:

    • 如果我错了,请纠正我,但不应该应用于目标服务器(B)吗?据我所知,对源页面 A 执行此操作没有任何效果。
    【解决方案3】:

    为此,我会使用 Envoy(或 Istio,如果您在 Kubernetes 上,它会使用 Envoy 本身)。您可以让 Envoy 以编程方式将 cors 过滤器仅应用于基于某些触发器的某些路径,例如路由目的地、请求源、某些标头键或值的存在,或者您可以想到的请求的任何其他方面的。

    https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/cors_filter

    【讨论】:

      猜你喜欢
      • 2023-03-15
      • 2015-08-15
      • 1970-01-01
      • 2012-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多