C# 已阻止对XMLHttpRequest的访问

C# 已阻止对XMLHttpRequest的访问,c#,flutter,localhost,web-config,flutter-web,C#,Flutter,Localhost,Web Config,Flutter Web,我正在尝试连接一个带有C#API的颤振web应用程序,如果发送,则在浏览器控制台中会显示错误 访问位于“”的XMLHttpRequesthttp://localhost:49986/...“起源”http://localhost:61306'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:它没有HTTP ok状态 如果我删除了“apikey”,那么连接就不会出错 Web.config代码 <handlers> <remove name="Extensi

我正在尝试连接一个带有C#API的颤振web应用程序,如果发送,则在浏览器控制台中会显示错误

访问位于“”的XMLHttpRequesthttp://localhost:49986/...“起源”http://localhost:61306'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:它没有HTTP ok状态

如果我删除了“apikey”,那么连接就不会出错

Web.config代码

<handlers>
  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  <remove name="OPTIONSVerbHandler" />
  <remove name="TRACEVerbHandler" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
  <httpProtocol>
      <customHeaders>
          <add name="Access-Control-Allow-Origin" value="*" />
          <add name="Access-Control-Allow-Credentials" value="false"/>
          <add name="Access-Control-Allow-Headers" value="Origin,Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token, apikey" />
          <add name="Access-Control-Allow-Methods" value="POST, OPTIONS" />
      </customHeaders>
  </httpProtocol>
</system.webServer>
注意:这个请求对邮递员很有效

建议在开发中禁用chrome CORS,因为它是2个本地主机HTTP,还是与HTTP无关? 提前谢谢

编辑: 邮递员测验

旁注:发布邮递员/提琴手选项请求/响应可能对知道如何配置此设置以提供答案的人有所帮助(这不是我)。您需要apikey吗?它看起来在没有apikey的情况下也能工作,因为邮递员设置了一个cookie,然后当你运行c#时,它正在使用cookie,所以你不需要自动在c#代码中发送的apikey。通常,当您发送一个请求时,您会收到一个状态为200 OK或状态为400/500的响应,表明存在错误。当您没有返回任何内容时,通常表示服务器不喜欢请求中的标题。看起来您的请求不安全(HTTPS),所以我会使用wireshark或fiddler之类的嗅探器,比较邮递员邮件头和c#邮件头。@AlexeiLevenkov,谢谢您的注释,我确实添加了them@jdweng,是的,我需要它作为API访问的安全保护,同样在postman中,apikey也在工作,但当我在Fatter应用程序上发送HTTP请求时,标题中的apikey会显示“被CORS策略阻止”,但如果我没有这样做,则请求会正常发送到API,不会出现任何错误,除了标题中没有apikey(自制安全检查)@DasserBasyouni,问题在于选项-确实POST可以工作,但它无法解释CORS选项调用中缺少/不匹配的内容(您需要重播浏览器发送的完全相同的选项调用,而不是您希望它发送的选项调用)。
static Dio getDio() {
    Dio dio = Dio();
    dio.options.headers.addAll({"apikey": "xyz"});
    return dio;
}