通过angular($ http服务)发送一个POST请求,它发送一个内容类型为application / json的非空值在Chrome上失败但在Firefox和Safari上运行正常。如果有效负载为空,则成功。
我能够提出一个显示问题的例子。转到以下jsbin并单击“单击我”按钮:
https://jsbin.com/velija/edit?html,js,output
您可以在此处看到为后端供电的简单代码: https://github.com/czambran/corsProblem
如果您在Mac上使用Firefox或Safari执行上述操作,则会说成功但如果您在Chrome for Mac上执行此操作,则第二次调用将失败。
如果您更新代码以使$ http调用使用内容类型的application / json在数据属性上具有值“”,那么即使在Chrome上调用也会成功。
以下是Chrome for Mac控制台上显示的错误:
XMLHttpRequest cannot load https://samplecorsapp.run.aws-usw02-pr.ice.predix.io/cors/corsRequestJson. The request was redirected to 'https://samplecorsapp.run.aws-usw02-pr.ice.predix.io/cors/corsRequestJson', which is disallowed for cross-origin requests that require preflight.
为什么会发生这种情况?