Azure中没有“Access-Control-Allow-Origin”标头

时间:2018-05-03 10:16:08

标签: c# azure cors

我有一个Azure API应用服务。 我在其中添加了*到CORS设置。

我在Azure中有另一个Web应用程序,我在其中调用Azure API应用程序。

示例:https://XXXXXX.XXXXXX.net/api/XXXXXX

当api使用小视频文件时调用工作,但每当视频超过20mb时,我总是得到 -

No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost:9000' is therefore not allowed access. 
The response had HTTP status code 500

API接受POST请求中的ID,并处理Azure Media存储中文件夹中的视频。当视频低于20mb时,不会发生此错误。

知道问题可能是什么?

我一直在

500 - 请求超时。 Web服务器未能在指定时间内响应。 作为响应和控制台上的CORS错误。

API调用可以正常运行。

这是web.config看起来像

<system.web>
    <compilation debug="true" targetFramework="4.6.1" />
    <httpRuntime targetFramework="4.6.1" maxRequestLength="5097151" executionTimeout="1800" />
    <httpModules>
      <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
    </httpModules>
  </system.web>

  <system.webServer>
    <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>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="5097151000"/>
      </requestFiltering>
    </security>
    <validation validateIntegratedModeConfiguration="false" />
    <modules>
      <remove name="ApplicationInsightsWebTracking" />
      <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" />
    </modules>
    <httpProtocol>

    </httpProtocol>
  </system.webServer>

3 个答案:

答案 0 :(得分:2)

没有CORS标头返回,因为响应是HTTP 500,很可能是因为有效负载超出了允许的最大大小。

使用更大的值修改web.config

<configuration>
   <system.webServer>
      <security>
         <requestFiltering>
            <requestLimits maxAllowedContentLength="{value In Bytes}"/>
         </requestFiltering>
      </security>
   </system.webServer>
</configuration>

From MSDN(强调我的) -

  

maxAllowedContentLength

     

可选的uint属性。   指定请求中内容的最大长度(以字节为单位)。   默认值为30000000,大约为28.6MB。

答案 1 :(得分:1)

如果没有CORS标头返回并且CORS设置已设置,则可能是应用程序由于异常而崩溃,并且它太大而无法反序列化。这是我的问题。

尝试使用azure cli进行调试。

答案 2 :(得分:-1)

应用程序,您发送请求,不接受Cross-Origin Resource Sharing(服务器端) 最简单的解决方法是允许他们=)

一种简单的方法: https://docs.microsoft.com/en-us/rest/api/storageservices/cross-origin-resource-sharing--cors--support-for-the-azure-storage-services