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