Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如果请求的来源不正确,我如何拒绝提供index.html?_Reactjs_Apache - Fatal编程技术网

Reactjs 如果请求的来源不正确,我如何拒绝提供index.html?

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

我正在开发一个聊天机器人,上面有一个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 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头的值编写的任何内容不同。