【发布时间】:2015-09-11 23:08:46
【问题描述】:
只是想找到一个解决方案。我在系统 A 中,我打了以下电话
$("#page-form").submit(function(event){
$.ajax({
type: "POST",
url: "https://someOtherUrl/process.php",
data: {
'mobNumber': $("#mobile").val()
}
}).done(function (response) {
alert(response);
});
})
现在这会调用另一台服务器上的 PHP 文件。这个PHP文件目前什么都不做,我只是有
<?php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: PUT, GET, POST");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
var_dump("1");
但是我收到了一个跨源请求被阻止的错误。为什么会发生这种情况?
附带说明,我无法访问运行系统 A 的服务器,因此必须在我的 PHP 文件所在的服务器上完成。
谢谢
更新
服务器似乎有这个 响应标头
Cache-Control no-cache
Connection Keep-Alive
Content-Type text/html; charset=utf-8
Date Thu, 25 Jun 2015 12:31:50 GMT
Expires Thu, 25 Jun 2015 12:31:50 GMT
Keep-Alive timeout=5, max=99
Pragma no-cache
Server Apache
Transfer-Encoding chunked
Vary Accept-Encoding
x-ua-compatible IE=edge
请求标头
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Connection keep-alive
User-Agent
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0
【问题讨论】:
-
Access-Control-Request-Headers中的值和Access-Control-Allow-Headers中的值一样吗? -
是否必须在系统 A 中设置 Access-Control-Request-Headers?如果是这样,我不太确定它们是什么
-
是的,
Access-Control-Request-Headers来自系统 A。看看使用开发工具从系统 A 请求什么。 -
您是否尝试注释掉
allow-methods和allow-headers,只是为了检查allow-origin是否正常工作? -
是的,同样的结果。我已经用我在 firebug 中看到的内容更新了操作
标签: php cross-domain