我遇到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发出请求,这就是我认为上面的行。所以有人知道这是怎么回事?
答案 0 :(得分:0)
您可以在App Service上控制CORS,该设置可能会覆盖您的web.config。在App Service菜单中,向下滚动到API部分,并有一个CORS菜单。
由于您指定了一些允许的标题和方法,该部分可能对您不起作用,但如果您为*添加记录,然后将其删除,则应该开始使用基于web.config的CORS处理。