无法重写 Access_Control_Allow_Origin

Posted

技术标签:

【中文标题】无法重写 Access_Control_Allow_Origin【英文标题】:Can't rewrite Access_Control_Allow_Origin 【发布时间】:2018-05-15 09:53:33 【问题描述】:

我有一个网站可以像我的其他网站的 CDN 一样工作。

我在 Web.config 中添加了以下内容

<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
    <add name="Access-Control-Allow-Methods" value="POST,GET,OPTIONS,PUT,DELETE" />
    <add name="Arr-Disable-Session-Affinity" value="True" />
  </customHeaders>
</httpProtocol>

<rewrite>
  <outboundRules>
    <clear />
    <rule name="AddCrossDomainHeader">
      <match serverVariable="RESPONSE_Access_Control_Allow_Origin" pattern=".*" />
      <conditions logicalGrouping="MatchAll" trackAllCaptures="true">
        <add input="HTTP_ORIGIN" pattern="(http(s)?://((.+\.)?[a-zA-Z0-9-]*\.ap\.dk|(.+\.)?localhost\:[0-9]*))" />
      </conditions>
      <action type="Rewrite" value="C:0" />
    </rule>
  </outboundRules>
</rewrite>

Access-control-allow-origin with multiple domainsAccess-control-allow-origin with multiple domains 中的答案 #2 启发了我

但 Access_Control_Allow_Origin 的重写仅适用于 localhost。在现场,它没有被重写,然后我收到这样的错误:

无法加载https://aptestlogin.ap.dk//Widgets/Footer.html:“Access-Control-Allow-Origin”标头的值“https://aptestproject.ap.dk”不等于提供的来源。 Origin 'https://aptestcompany.ap.dk' 因此不允许访问

为了加载这个“Footer.html”,我必须清除浏览器中的缓存,如果我打开另一个需要它的网站,请重复此操作。

【问题讨论】:

IIS 是直接在 live 上工作还是通过代理湖 nginx 工作? 【参考方案1】:

你可以这样试试

安装包 Microsoft.AspNet.WebApi.Cors

打开文件 App_Start/WebApiConfig.cs。

public static void Register(HttpConfiguration config)
        

            config.EnableCors(); //add this


        

【讨论】:

【参考方案2】:

尝试检查正则表达式模式。也许正斜杠未转义 // 或其他。

https?:\/\/((.+\.)?[a-zA-Z0-9-]*\.ap\.dk|(.+\.)?localhost(\:[0-9]*)?)

【讨论】:

【参考方案3】:

https://enable-cors.org/server_aspnet.html

以上将为您的问题提供解决方案。

【讨论】:

【参考方案4】:

改变

<match serverVariable="RESPONSE_Access_Control_Allow_Origin" pattern=".*" />

<match serverVariable="RESPONSE_Access_Control_Allow_Origin" pattern="*" />

【讨论】:

【参考方案5】:

如果您在 Visual Studio 中工作,请从包管理器或 Nuget 包管理器(如果有)安装 Microsoft.AspNet.WebApi.Cors。

打开文件 App_Start/WebApiConfig.cs。将以下代码添加到 WebApiConfig.Register 方法中。

using System.Web.Http;
namespace WebService

  public static class WebApiConfig
 
    public static void Register(HttpConfiguration config)
    
        // New code
        config.EnableCors();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/controller/id",
            defaults: new  id = RouteParameter.Optional 
        );
    
  

如果您想了解有关此跨源资源共享 (CORS) 的更多信息,请参阅此处https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api 或在 Youtube 中搜索,您会得到很多关于它的视频。

>

【讨论】:

以上是关于无法重写 Access_Control_Allow_Origin的主要内容,如果未能解决你的问题,请参考以下文章

重写url wordpress无法正常工作

重写为 MVC 后 GUI 无法正常工作

无法在 nginx 中隐藏 index.php 以进行社交引擎重写

QSettings 重写 .ini 文件,因此无法恢复值

无法使用批处理文件重写txt文件

无法使用 URL 重写出站规则更改 IIS 响应代码