【问题标题】:error for post request with headers带有标头的发布请求错误
【发布时间】:2018-03-28 03:47:25
【问题描述】:

我正在发送 ajax 请求 里面有标题。 并得到这样的错误 对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。起源。 我像这样在我的 mvc 应用程序中启用了标头,但同样的错误即将到来。并且想解决这个问题....

<customHeaders>
        <remove name="Server" />
        <remove name="X-Powered-By" />
        <remove name="X-AspNet-Version" />
        <remove name="Access-Control-Allow-Headers"/>
        <add    name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept,Token" />
        <add    name="Access-Control-Expose-Headers" value="ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-Exceptionless-Client" />
        <remove name="Access-Control-Allow-Origin"/>
      </customHeaders>

【问题讨论】:

  • 您的错误表明没有“Access-Control-Allow-Origin”标头。在您的配置中,您专门将其删除。所以我不明白你的问题是什么。
  • 我想从不同的服务器向 mvc action 发送带有标头的 post 请求。我该怎么做

标签: c# jquery asp.net-mvc


【解决方案1】:

问题是您在 Origin 和 Destiny 之间的 URL 不同。

将 Destiny 的 Web.config 更改为具有以下几行:

<?xml version="1.0" encoding="utf-8"?>
    <configuration>
     <system.webServer>
       <httpProtocol>
          <customHeaders>
            <add name="Access-Control-Allow-Origin" value="*" />
            <add name="Access-Control-Allow-Headers" value="Content-Type" />
            <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
          </customHeaders>
        </httpProtocol>
     </system.webServer>
    </configuration>

请小心,因为任何人都可以访问您的资源 (*)。如果需要,您可以编写 URL 来源。

解决此问题的另一个选项是启用 CORS:https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-28
    • 2019-06-23
    • 1970-01-01
    • 2011-10-01
    • 2020-05-12
    • 2020-01-07
    • 2019-04-15
    • 1970-01-01
    相关资源
    最近更新 更多