【问题标题】:PHP Cross-Origin Request BlockedPHP 跨域请求被阻止
【发布时间】: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-methodsallow-headers,只是为了检查allow-origin 是否正常工作?
  • 是的,同样的结果。我已经用我在 firebug 中看到的内容更新了操作

标签: php cross-domain


【解决方案1】:

https://someOtherUrl/ 的根文件夹中的 .htaccess 文件中试试这个:

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

【讨论】:

    猜你喜欢
    • 2021-06-26
    • 2014-10-13
    • 2019-11-04
    • 2017-02-06
    • 2017-01-04
    • 2014-12-27
    相关资源
    最近更新 更多