AJAX和Azure反向代理的CORS问题

时间:2017-10-16 21:19:25

标签: ajax azure proxy cors

我遇到CORS问题。 我通过域B从域A中的SPA到域C中的REST API(我的)也进行了AJAX调用,我将其设置为反向代理和负载均衡器。 这三个都部署到Azure Web Apps。

从A到C的呼叫直接工作,没有任何问题。 但是通过B从A到C的呼叫将无效。

使用Portal,允许来自A的B和C使用CORS。 使用Portal可以在B上使用CORS。

API服务器C的Web.config具有以下内容:

    <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, OPTIONS" />
      </customHeaders>
   </httpProtocol>

但是我收到以下错误:

    Response to preflight request doesn't pass access control check: 
    No 'Access-Control-Allow-Origin' header is present on the requested resource. 
    Origin 'null' is therefore not allowed access. 
    The response had HTTP status code 400.

所以,我的理解是API服务器必须允许SPA发出请求,这就是我认为上面的行。所以有人知道这是怎么回事?

1 个答案:

答案 0 :(得分:0)

您可以在App Service上控制CORS,该设置可能会覆盖您的web.config。在App Service菜单中,向下滚动到API部分,并有一个CORS菜单。

由于您指定了一些允许的标题和方法,该部分可能对您不起作用,但如果您为*添加记录,然后将其删除,则应该开始使用基于web.config的CORS处理。