我的应用程序结构如下:Azure Api管理->瓶后端。
Flask允许所有的origin。
app = Flask(__name__)
CORS(app, resources={r"/*": {"origins": "*"}})
Azure Api Management入站和出站策略如下:
<policies>
<inbound>
<base />
<set-backend-service id="apim-generated-policy" backend-id="webapp_test" />
<cors allow-credentials="true">
<allowed-origins>
<origin>https://va-prod-dashboard.azurewebsites.net</origin>
<origin>http://localhost:9000</origin>
<origin>http://localhost:3000</origin>
</allowed-origins>
<allowed-methods>
<method>GET</method>
<method>POST</method>
</allowed-methods>
</cors>
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
当我试图从React前端发出POST请求时,问题开始了。当从python(google colab)发出请求时,我打印了响应头,它有Access-Control-Allow-Origin: *(所有)。
React post请求失败,请求的资源上没有'Access-Control-Allow-Origin'标头。
对我来说奇怪的是只有post请求失败,只有在javascript中.
有谁知道什么可能是罪魁祸首吗?
感谢您花时间阅读这篇文章!
感谢Daniel W的宝贵建议。张贴作为回答,以帮助其他社区成员。
您需要将
<cors>
指令也添加到<outbound>
。
CORS是由服务器发送的,而不是由客户端发送的,很确定它与MS代理有关。
更多信息请参考Microsoft-Doc-CORS-APIM。