本文概述
- 访问控制允许来源
- 访问控制允许方法
- 访问控制允许标题
- 访问控制公开标头
- 访问控制最大时间
- 访问控制允许凭证
所有现代浏览器均支持CORS(跨源资源共享)标头。
我可以使用cors吗?来自caniuse.com的跨主要浏览器的cors功能支持数据。
默认情况下, 浏览器通过脚本限制跨域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的示例。在nginx.conf或使用中的配置文件的服务器块中添加以下内容。
add_header Access-Control-Allow-Origin "https://geekflare.dev";
访问控制允许方法 浏览器可以启动一个或多个HTTP方法来访问资源。例如:– GET, PUT, OPTIONS, PUT, DELETE, POST
阿帕奇
只允许GET和POST。
Header add Access-Control-Allow-Methods "GET, POST"
Nginx的
假设你需要添加DELETE和OPTIONS方法, 然后可以如下添加。
add_header Access-Control-Allow-Methods "DELETE, OPTIONS";
重新启动后, 你应该在响应标题中看到它们。
文章图片
访问控制允许标题 以下标头位于安全列表中, 意味着你无需添加一个。默认情况下, 它应该工作。
- 内容类型
- 接受
- 内容语言
- 接受语言
阿帕奇
假设你要允许X-Custom-Header和X-Powered-By标头。
Header always set 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";
访问控制公开标头 以下标头已经是安全列表。意味着, 如果要公开它们, 则无需添加。
- 过期
- 语用
- 缓存控制
- 上一次更改
- 内容语言
- 内容类型
阿帕奇
使用通配符公开所有标头。
Header always set Access-Control-Expose-Headers "*"
注意:通配符仍不会公开Authorization标头, 如果需要, 则需要明确提及。
Header always set Access-Control-Expose-Headers "Authorization, *"
结果应如下所示。
文章图片
Nginx的
如果要公开Origin标头。
add_header Access-Control-Expose-Headers "Origin";
访问控制最大时间 你是否知道可以缓存Access-Control-Allow-Header和Access-Control-Allow-Methods头中的数据?在Firefox中最多可以缓存24小时, 在Chrome(76+)中最多可以缓存2小时。
要禁用缓存, 你可以将值保持为-1
阿帕奇
缓存15分钟。
Header always set Access-Control-Max-Age "900"
如你所见, 该值以秒为单位。
Nginx的
要缓存一小时。
add_header Access-Control-Max-Age "3600";
添加后, 重新启动Nginx以查看结果。
文章图片
访问控制允许凭证 【如何在Apache和Nginx中启用CORS()】在这里只能设置一个选项-正确。这是为了允许你公开凭据, 例如Cookie, TLS证书, 授权。
阿帕奇
Header always set Access-Control-Allow-Credentials "true"
Nginx的
add_header Access-Control-Allow-Credentials "true";
和结果。
文章图片
验证结果 添加必要的标头后, 你可以使用浏览器内置的开发人员工具或在线HTTP标头检查器。
文章图片
总结
我希望以上内容可以帮助你在Apache HTTP和Nginx Web服务器中实现CORS标头, 以提高安全性。你可能还对应用OWASP建议的安全标头感兴趣。
推荐阅读
- 如何在Apache,Nginx和Cloudflare中启用TLS 1.3()
- 如何像黑客一样分析你的网站以查找漏洞()
- 安全最佳实践–构建可靠的Docker容器
- 13个用于性能和配置更改的DNS监视工具
- 适用于小型企业网站的十大基于云的DDoS保护
- 什么是DNS CAA(如何验证和实施?)
- 6种最佳数据丢失防护解决方案可以为你节省数百万美元
- 在黑客入侵之前先检测网站漏洞和安全漏洞
- PubNub GCM通知无法在Android 5.0及更高版本上运行