正在开发一个离子应用程序,该应用程序调用Web服务器上的api进行数据库交互。我之前已经做过一次,并从该项目复制了代码,但是它不起作用。
这是我在php网络服务器上的标头:
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Methods: GET, HEAD, OPTIONS, POST, PUT, DELETE");
header("Access-Control-Allow-Headers: Authorization, Origin, X-Requested-With, Content-Type, Accept");
header("Access-Control-Expose-Headers: Access-Control-Allow-Headers, Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers");
这是我尝试从应用启动POST时收到的错误:
Cross-Origin Read Blocking (CORB) blocked cross-origin response <url remove by me> with MIME type text/html.
Failed to load <url removed by me>: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.
状态码为403禁止访问
花些时间来使标题可以用于先前的项目,并且这些标题是相同的集合。这次它托管在另一台服务器上,但是我不确定这对CORS是否有任何影响。该文件存在,这是它的正确路径。如果我直接导航到api页面,则标题显示Access-Control-Allow-Origin * ...,但尝试从应用程序获取它只是无法正常工作。
感谢您的帮助。 CORS可能会很痛苦。
答案 0 :(得分:2)
感谢昨天的所有建议,我终于弄清楚了这是什么。在响应似乎没有任何改变或变化之后,我联系了托管公司。原来,它们在最低的托管层上阻止了OPTIONS请求。
因此,如果还有其他人遇到此问题,请与您的托管公司联系,看看它是否在他们的尽头。
答案 1 :(得分:1)
预检请求不能包含Cookie或其他常见的身份验证标头,并且必须收到200 OK
响应。
您的服务器响应403 Forbidden
。您需要从要授权的需求中排除OPTIONS请求。
如果我直接导航到api页面
…那么您正在发出GET请求,而不是印前检查OPTIONS请求。