【问题标题】:How to Test CORS header如何测试 CORS 标头
【发布时间】:2018-12-27 19:54:51
【问题描述】:

我们的应用程序支持 CORS 配置标头。 我已经在两个不同的主机上分别配置了 testApp。两种设置都彼此独立工作。 host1 上的应用程序配置了 CORS 标头 Access-Control-Allow-Origin 以指向 host2 上的应用程序。 当我访问 host2 的应用程序页面时,期望它显示 Access-Control-Allow-Origin 标头作为响应。但这是缺失的。

如何测试 CORS 标头以确认其正常工作或正确编码以支持跨域资源共享。

【问题讨论】:

标签: header cors cross-domain


【解决方案1】:

如果您的应用程序返回标头:Access-Control-Allow-Origin,那么它应该可以工作。在我的特定用例中,我将其设置为“*”。

否则测试将显示错误,可从浏览器控制台查看。它会说:CORS 策略已阻止访问 ...

您可以使用浏览器测试 CORS 标头是否正常工作。 我使用了这个,希望这会有所帮助。您会在其中找到说明。 https://github.com/cactuz/cors-tester-from-browser

【讨论】:

  • 很少有你想设置Access-Control-Allow-Origin: *的用例。这实际上将禁用您的应用程序的身份验证,因为任何网站现在都可以劫持您用户的会话。
  • @ATOMP 虽然不推荐 * 值,但 ACAO 标头与身份验证无关,并且没有现代网站使用此标头作为身份验证方法。
【解决方案2】:

您可以从终端使用 cUrl 对其进行测试。

curl -v --request OPTIONS 'localhost:3000' --header 'Origin: http://some.origin.here'; --header '访问控制请求方法:GET'

【讨论】:

    【解决方案3】:

    您可以利用浏览器调试器提供的fetch(在 Chrome 和 Firefox 上按 F12,然后转到控制台):

    fetch('https://google.ca')

    如果您收到 CORS 错误,则表示您使用 (Origin) 打开调试器的当前站点未包含在您从中获取的站点的 Access-Control-Allow-Origin 标头中。

    【讨论】:

      【解决方案4】:

      您可以使用任何其他客户端(如 POSTMAN Rest Client)对其进行测试,或者您可以从 浏览器控制台 -> 网络选项卡 -> 在 xhr 过滤器中检查它 - 检查特定请求的标头。您可以检查请求和响应。

      【讨论】:

      • 不,您不能使用 Postman 测试 CORS。 stackoverflow.com/a/36486188/1811043
      • 你为什么不能?你不能看一下响应的标题吗?您可以查找“access-control-allow-origin”。
      • 邮递员总是“同源”,所以它不是真正的测试
      • 如果请求中设置了“Origin”标头,服务器甚至会将CORS标头发送回邮递员客户端。
      猜你喜欢
      • 1970-01-01
      • 2015-08-10
      • 1970-01-01
      • 2017-05-26
      • 1970-01-01
      • 1970-01-01
      • 2015-10-08
      • 2018-05-13
      • 2018-06-16
      相关资源
      最近更新 更多