为什么CORS无法使用此配置?

时间:2019-05-01 21:10:53

标签: .net apache http ubuntu mono

我的情况很复杂:

  • Ubuntu服务器18.04
  • Apache 2.4.29
  • 启用单声道和mod_mono

关于页面的情况混合: -php页面 -ASMX .NET Web服务

最后,CDN上的WebGL应用程序。

因此,用户可以在cdn.mywebsite.com上获取我的WebGL应用程序。 WebGL应用程序必须与我的asmx .net网络服务通信。

但是我遇到了经典错误:

  

..已被CORS政策阻止:对预检请求的响应   没有通过访问控制检查:它没有HTTP正常状态。

我添加了: -在.htacces文件中

<IfModule mod_headers.c>
  Header add Access-Control-Allow-Origin "*" 
</IfModule>

而且在web.config文件中(因为我的Web服务也在运行):

 <system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS"/>
        <add name="Access-Control-Allow-Headers" value="Content-Type"/>
      </customHeaders>
    </httpProtocol>
  </system.webServer>

我还启用了标头apache mod。

CORS无法正常工作是什么原因?

1 个答案:

答案 0 :(得分:0)

我使用了另一种SO解决方案:

handling CORS preflight request in Apache

通过环顾四周,我发现您可以使用重写来完成此操作,例如:

RewriteEngine开启
RewriteCond%{REQUEST_METHOD}选项 RewriteRule ^(。*)$ $ 1 [R = 200,L]
(确保您启用了重写mod)

然后您应该使用“始终设置”来设置标题,例如:

标题始终设置为Access-Control-Allow-Origin“ *”
标头始终将Access-Control-Allow-Methods设置为“ POST,GET,OPTIONS”