【问题标题】:Access to XMLHttpRequest Blocked by CORS访问被 CORS 阻止的 XMLHttpRequest
【发布时间】:2019-12-16 01:56:35
【问题描述】:

我在我的 SP 站点中有一个通过 javascript 的 Web 服务,它在单击 URL 时将日志插入到我的数据库中

但是,在控制台模式下,会显示以下错误。日志也没有插入。

访问 XMLHttpRequest 在 'http://test.com:8888/MyWebServices.asmx/InsertAuditLog' 来自原点 'http://test.com' 已被 CORS 阻止 策略:对预检请求的响应未通过访问控制 检查:没有“Access-Control-Allow-Origin”标头出现在 请求的资源。

在网上搜索后,我发现我可能需要在我的 web.config 文件中包含一些配置。

所以我去了 IIS,并将以下内容添加到我的配置文件中,并进行了 iisreset。但是错误仍然显示与初始相同。

下面是我添加到 web.config 文件中的部分。

<configuration>
<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="http://test.com/" />
    <add name="Access-Control-Allow-Headers" value="origin, accept, content-Type" />
    <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
    <add name="Access-Control-Allow-Credentials" value="true" />
  </customHeaders> 
</httpProtocol>
</configuration>

我可以知道我哪里做错了吗?或者是否有我需要在其中插入上述行的特定标签?比如system.web,或者system.webServer

【问题讨论】:

  • 您的服务器是否处理OPTIONS 飞行前请求? (猜它没有 - 因为那是错误)
  • 让我尝试删除它
  • 已将其删除,但错误仍然出现。我会寻求其他解决方案。谢谢!
  • 什么?不...您的问题是您的服务器 可能没有处理OPTIONS 预检请求...您“删除”了什么?如果有什么你需要“添加”的东西!!!

标签: javascript asp.net http sharepoint cors


【解决方案1】:

你应该试试这个。

制作global.aspx 文件:

protected void Application_BeginRequest(object sender, EventArgs e)  
{  
    var context = HttpContext.Current;  
    var response = context.Response;  
  
    // enable CORS  
    response.AddHeader("Access-Control-Allow-Origin", "*");  
  
    if (context.Request.HttpMethod == "OPTIONS")  
    {  
        response.AddHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");  
        response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");  
        response.End();  
    }  
}

在您的 web.config 中:

<system.webServer>  
    <httpProtocol>  
      <customHeaders>  
       <add name="Access-Control-Allow-Headers" value="accept, content-type" />  
        <add name="Access-Control-Allow-Origin" value="*" />  
        <add name="Access-Control-Allow-Methods" value="POST, GET, OPTIONS" />  
      </customHeaders>  
    </httpProtocol>  
  </system.webServer>

【讨论】:

  • 为什么要更改 -Allow-Origin 和 -Allow-Methods 值,并删除 -Allow-Credentials 标头?不了解 CORS 的人可能会认为您必须进行这些更改:p
  • @JaromandaX 如果你写 -Allow-Origin="*" 这意味着它将允许所有域和 -Allow-Methods 在此方法中它将允许这些方法(放置、发布、获取、选项等),但大多数时候我们都使用 post 和 get 方法。
  • 那个时候他会像allow-origin="your domain name"一样处理他的域名。
猜你喜欢
  • 2022-01-01
  • 2019-12-18
  • 2019-11-03
  • 2019-04-28
  • 2022-08-14
  • 2023-01-10
  • 2020-07-25
  • 2021-10-05
  • 2020-11-23
相关资源
最近更新 更多