以下使用jQuery post函数将表单提交到php页面,然后在用户的同一html页面上打印响应。该代码在Microsoft Edge浏览器上运行完美_它发布,然后从php页面打印响应,但不能在我尝试过的浏览器(如Firefox 5.0,IE11和Chrome)上的任何其他浏览器上运行。但是,我在Chrome上进行了检查,发现以下错误:“XMLHttp请求无法加载localhost / products / s1.php请求的源上没有'access-control-allow-origin'标头。因此不允许使用origin'null'访问”。请问我该如何解决这个问题。任何帮助将受到高度赞赏。 铬的错误可以在下图中找到: Error from chrome
以及Microsoft Edge的成功: Microsoft Edge success
答案 0 :(得分:0)
这种情况正在发生,因为其他浏览器(不是Edge)认为您正在尝试向与该页面所在域不同的主机(域)发出Ajax请求。作为安全措施,浏览器将首先询问服务器该请求是否可接受。除非服务器配置为批准请求,否则浏览器将永远不会实际发送请求。此安全功能称为Same Origin Policy
让我们先看看一个简单的修复是否足够:在您的Ajax请求中,尝试将网址从localhost/products/s1.php
更改为/products/s1.php
答案 1 :(得分:0)
首先将我的php文件放在提交请求的顶部解决了我的问题:
见下文:
header("Access-Control-Allow-Origin:*");
header("Access-Control-Allow-Credentials:true");
header("Access-Control-Max-Age: 100000");
header("Access-Control-Allow-Headers: X-Requested-With, Content-Type, Origin, Cache-Control, Pragma, Authorization, Accept, Accept-Encoding");
header("Access-Control-Allow-Methods: PUT, POST, GET, OPTIONS, DELETE");
但是,你可能不需要在生产环境中使用它,除非你确定你真的想要允许角色。