Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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
CORS-难以确定何时何地_Cors_Mikrotik - Fatal编程技术网

CORS-难以确定何时何地

CORS-难以确定何时何地,cors,mikrotik,Cors,Mikrotik,我正在制作一个热点,每次我尝试登录时,它都会说: 跨源请求被阻止。同一源策略不允许在读取时读取远程资源。(原因:缺少CORS标头“访问控制允许原点”) 首先,我必须承认我只了解CORS的原理。我对实用性的理解很模糊,我在mozilla上读到的文档也没有多大帮助。我也读过很多关于堆栈溢出的帖子,但是我没有找到我要找的anwser 我想知道CORS头需要放在哪里(HTML、PHP等)。另外,PHP CORS头应该如何以及在何处声明。还应在何时何地放置HTML CORS标头。最后,我应该把apache

我正在制作一个热点,每次我尝试登录时,它都会说:

跨源请求被阻止。同一源策略不允许在读取时读取远程资源。(原因:缺少CORS标头“访问控制允许原点”)

首先,我必须承认我只了解CORS的原理。我对实用性的理解很模糊,我在mozilla上读到的文档也没有多大帮助。我也读过很多关于堆栈溢出的帖子,但是我没有找到我要找的anwser

我想知道CORS头需要放在哪里(HTML、PHP等)。另外,PHP CORS头应该如何以及在何处声明。还应在何时何地放置HTML CORS标头。最后,我应该把apachecors头放在哪里

我尝试过各种选择,但就是不能让它工作

路由器/热点承载着一个登录页面,在用户输入信息后,会发布两个ajax帖子。第一个登录用户(他可以访问internet),第二个ND将一些信息发送到网络之外的apache服务器,php将一些信息保存到数据库中

正如我之前提到的,我只是对CORS应该如何工作有一个模糊的想法,所以任何指针、更正等都是非常受欢迎的

另外,如果你需要任何额外的信息,就说出来。我不知道还能提供什么,我也不想用毫无意义的信息来聚集这篇文章

这是目前的代码

PHP

这是特定于的,据我所知,它必须以这种方式设置(尽管仍然不起作用)

阿帕奇

<Directory>
    AllowOverride none
    Require all denied

    #I added this
    Header set Access-Control-Allow-Origin "*"
</Directory>

#And I added this right after the </Directory>
<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Methods" value="POST, GET, OPTIONS"/>
    <add name="Access-Control-Allow-Headers" value="Authorization, Origin, X-Requested-With, Content-Type, Accept"/>
  </customHeaders>
</httpProtocol>

不允许超限
要求全部拒绝
#我加了这个
标题集访问控制允许原点“*”
#然后我就在
在添加Apache代码后,它停止工作,出现以下错误:

错误:Apache意外关闭。这可能是由于端口阻塞、缺少依赖项、权限不正确、崩溃或其他方法关闭所致。按“日志”按钮查看错误日志并查看Windows事件查看器以获取更多线索如果需要更多帮助,请复制整个日志窗口并在论坛上发布

当然,在日志中没有任何东西可以说明问题所在


谢谢你的帮助。

所以在我做了更多的挖掘之后,我发现我已经为Mikrotik Hotspot设置了一个DNS名称(这是设置Hotspot时的选项之一)。AJAX调用实际上是对该网站/DNS进行的,我并不拥有该网站

从热点设置中删除DNS名称后,我再也无法获得消息

希望这对将来的人有所帮助。 享受

$(if http-header == "Access-Control-Allow-Origin")http://realhotspot.com$(endif)
$(if http-header == "Access-Control-Allow-Origin")http://10.5.50.1/login$(endif)
$(if http-header == "Access-Control-Allow-Origin")http://10.5.50.1$(endif)
$(if http-header == "Access-Control-Allow-Origin")*$(endif)
<Directory>
    AllowOverride none
    Require all denied

    #I added this
    Header set Access-Control-Allow-Origin "*"
</Directory>

#And I added this right after the </Directory>
<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Methods" value="POST, GET, OPTIONS"/>
    <add name="Access-Control-Allow-Headers" value="Authorization, Origin, X-Requested-With, Content-Type, Accept"/>
  </customHeaders>
</httpProtocol>