Reactjs 如果请求的来源不正确,我如何拒绝提供index.html?
我正在开发一个聊天机器人,上面有一个React前端、一个Apache服务器和一个负载平衡器。我在Apache上添加了CORS配置,就像在适当的VirtualHost上添加的那样:Reactjs 如果请求的来源不正确,我如何拒绝提供index.html?,reactjs,apache,Reactjs,Apache,我正在开发一个聊天机器人,上面有一个React前端、一个Apache服务器和一个负载平衡器。我在Apache上添加了CORS配置,就像在适当的VirtualHost上添加的那样: Require all granted Header always set Access-Control-Allow-Origin "myURL" Header always set Access-Control-Allow-Methods "POST,GET,PUT" Header always se
Require all granted
Header always set Access-Control-Allow-Origin "myURL"
Header always set Access-Control-Allow-Methods "POST,GET,PUT"
Header always set Access-Control-Max-Age "3600"
Header always set Access-Control-Allow-Headers "Authorization"
Header always set Access-Control-Expose-Headers "Authorization"
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]
每当我使用不同的来源发出请求时,我都会得到CORS标题,但它也会返回200和页面内容。我怎样才能使它返回401,而身体上什么也没有
在应用程序方面有什么我可以做的吗?在Apache上呢?我知道安全风险,但如果有人需要这样做,其实很简单 您可以使用mod_rewrite或If..Else语句并将其添加到.htaccess文件或httpd.conf中。以下是If..Else的解决方案:
<If "%{HTTP:Origin} in { 'yourURL' }">
Require all granted
</If>
<ElseIf "%{HTTP:Origin} == ''">
Require all granted
</ElseIf>
<Else>
Require all denied
</Else>
要求所有授权
要求所有授权
要求全部拒绝
我也允许没有来源的请求,但您可以删除ElseIf,否则。答案是您不希望基于来源标头的值执行任何服务器端阻止,因为来源标头是伪造的。原点值基本上只对浏览器有用,用于浏览器端的响应阻塞(这是CORS的作用,而不是服务器端阻塞),这是因为,当从浏览器中运行的前端JavaScript代码发出请求时,浏览器是唯一知道请求的实际来源的工具。如果您想在Apache中执行服务器端阻止,则现有内置的
mod_auth*
身份验证/访问控制机制可与Apache一起使用,这些机制与来源标头完全无关。有关详细信息,请参阅位于的文档。特别是,有一种mod_authz_host
机制,使您能够基于IP地址或主机名控制访问。有关详细信息,请参阅位于Thank的文档,但我确实需要它以Origin标头为条件,这是我的客户通过漏洞测试的要求。有什么想法吗?启用mod_authz_host
后,添加一行如下内容:Require host example.org
,根据远程主机的真实主机名控制访问。这将产生与您可能尝试使用Origin头的值编写的内容相同的效果,就问题中描述的目的而言,它在功能上与主机名相同。而且绕过它也不太可能——这与使用Origin头的值编写的任何内容不同。