如何在 Apache 和 Nginx 中启用 CORS?

网站技术教程 - 程序员技术栈 - 网站安全技术 AnWenGlobal 7个月前 (09-18) 92次浏览 0个评论 扫描二维码

如何在 Apache 和 Nginx 中启用 CORS?

使用 CORS 标头限制或允许站点之间的资源共享。

所有现代浏览器都支持跨域资源共享 (CORS) 标头。

可以用 corns 吗 ?有关主要浏览器对 cors 功能的支持的数据,取自 caniuse.com。

默认情况下,浏览器通过脚本限制跨域HTTP请求。而且……,CORS可以方便地在其他 Web 应用程序中重用通用应用程序资源。一旦正确添加,它就会告诉浏览器从不同的源加载应用程序。

服务器可以发送六种类型的 CORS 标头。让我们来探索一下它们。

访问控制 – 授权来源

最流行的是告诉浏览器从授权来源加载资源的方法。它支持通配符(*),允许任何域加载资源。但是,可以选择允许特定来源。

阿帕奇
添加以下内容httpd.conf或使用的任何其他配置文件。

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

重启Apache进行测试。您应该在响应标头中看到它们。

并且,要授权特定来源(例如:https://gf.dev),您可以使用以下命令。

Header set Access-Control-Allow-Origin "https://gf.dev"

nginx

以下是允许来源 https: //geekflare . dev  的示例。将以下内容添加到正在使用的serveur块文件nginx.conf或配置文件中。

add_header Access-Control-Allow-Origin "https://geekflare.dev" ;

访问控制允许方法

浏览器可以启动一种或多种HTTP方法来访问资源。例如:- 获取、放置、选项、放置、删除、发布

阿帕奇
仅允许 GET 和 POST。

En-tête ajouter Access-Control-Allow-Methods "GET, POST"

nginx
假设您需要添加DELETE和OPTIONS方法,那么您可以添加以下内容。

add_header Access-Control-Allow-Methods "DELETE, OPTIONS" ;

重新启动后,您应该在响应标头中看到它们。

访问控制 – 允许标头

以下标头位于安全列表中,这意味着您无需添加。它们应该默认工作。

内容类型
接受
内容语言
语言接受

但是,如果您需要添加自定义的,您可以这样做。它支持一个或多个标头。

阿帕奇

假设您想要允许X-Custom-Header和X-Powered-By标头。

En-tête toujours défini Access-Control-Allow-Headers "X-Custom-Header, X-Powered-By"

重新启动后,您应该在响应标头中看到结果。

nginx

添加 X-Customer-Software 和 X-My-Custom 标头的示例。

add_header Access-Control-Allow-Headers "X-Custom-Software, X-My-Custom" ;

访问控制暴露标头

以下标头已经是安全列表的一部分。所以如果你想显示它们就不需要添加它们。

到期日
杂注
缓存控制
最后修改
内容语言
内容类型
但如果您需要安全列表中的项目之外的其他项目,您可以按如下方式允许它们。

阿帕奇
使用通配符公开所有标头。

En-tête toujours défini Access-Control-Expose-Headers "*"

注意:通配符不一定公开Autorisation,如果您需要它,则必须明确提及它。

En-tête toujours défini Access-Control-Expose-Headers "Authorization, *"

结果应该是这样的。

nginx
如果你想暴露Origine标题。

add_header Access-Control-Expose-Headers "Origin" ;

访问控制最大年龄

您知道什么数据 访问控制 – 允许标头 可以访问控制允许方法被缓存吗?它们在 Firefox 中最多可缓存 24 小时,在 Chrome (76+) 中最多可缓存 2 小时。

要禁用缓存,您可以保留以下值-1

阿帕奇
缓存15分钟。

L'en-tête définit toujours Access-Control-Max-Age "900".

如您所见,该值以秒为单位表示。

nginx

缓存一小时。

add_header Access-Control-Max-Age "3600" ;

添加完成后,重启Nginx即可看到结果。

访问控制 – 允许凭证
这里只能设置一个选项:true。Le présent如果您想公开 cookie、TLS 证书、权限等凭据,则允许。

阿帕奇

L'en-tête définit toujours Access-Control-Allow-Credentials "true" (contrôle d'accès-autorisation des informations d'identification)

或者

The header always sets Access-Control-Allow-Credentials "true"

nginx

add_header Access-Control-Allow-Credentials "true" ;

和结果。

检查结果
添加必要的标头后,您可以使用浏览器的内置开发人员工具或在线 HTTP 标头检查器开发人员工具。

结论

我希望上述信息可以帮助您在 Apache HTTP 和 Nginx Web 服务器中实现 CORS 标头,以获得更好的安全性。您可能还对OWASP 推荐的安全标头应用程序感兴趣。

喜欢 (1)
[请扫码关注微信公众号]
分享 (0)

您必须 登录 才能发表评论!