Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CORS在Firefox中不工作_Php_Ajax_Apache_Firefox_Cors - Fatal编程技术网

Php CORS在Firefox中不工作

Php CORS在Firefox中不工作,php,ajax,apache,firefox,cors,Php,Ajax,Apache,Firefox,Cors,我试图通过ajax将数据加载到jQuery对话框中,但在Firefox(34.0.5)中请求失败。工作正常,我在Chrome和Safari中没有收到任何投诉 我的apache配置包含: Header set Access-Control-Allow-Origin "*" Header set Access-Control-Allow-Methods: "PUT, GET, POST, DELETE, OPTIONS" Header set Access-Control-Allow-Header

我试图通过ajax将数据加载到jQuery对话框中,但在Firefox(34.0.5)中请求失败。工作正常,我在Chrome和Safari中没有收到任何投诉

我的apache配置包含:

Header set Access-Control-Allow-Origin "*" 
Header set Access-Control-Allow-Methods: "PUT, GET, POST, DELETE, OPTIONS"
Header set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept"
jQuery只是:

$('#dialog').load('example.php', function() { $('#dialog').dialog('open'); });
Firefox响应以下控制台错误:

跨源请求被阻止:同一源策略不允许读取远程资源http://www.example.com/example.php. 这可以通过将资源移动到同一域或启用CORS来解决。

检查来自ajax请求的响应头,它们看起来都是完整的,并且与apache中声明的内容保持一致。我是否应该包括一些其他指令或以某种方式更改配置以使其工作

更新:问题的根源在于我希望
example.com
www.example.com
都能起到同样的作用。在这两种情况下,讨论中的站点在标题
中始终有一个标记,因为这是默认站点框架的一部分。后来我发现,删除此链接允许ajax请求在example.com上工作,即使它仍然专门从www子域调用资源

有趣的是,删除此标记后,请求和响应头的许多方面都会发生变化。对于任何可能对此处的含义有所了解的人,我将粘贴下面的请求和响应标题

以下是删除了
标记的标题。在本例中,ajax调用成功:

回应

请求

下面是带有
标记的标题。这些标题反映了ajax调用失败的场景。值得注意的是,响应头中的“位置”字段显示“https”,即使这不是通过https连接发生的:

回应

请求


根据,您不能将通配符用于“认证请求”,因此您的请求可能属于该类别。

CORS头是否发送了两次?我最近遇到了一个问题,我错误地将它添加到我的htaccess和apache conf中。这导致头值被发送了两次,这导致一些浏览器无法正常工作。我看不到这一点。我没有在.htaccess only apache vhost conf中设置任何内容-尽管我认为如果使用
Header add
而不是
Header set
,也可能会发生这种情况。就目前而言,我只在响应标题中看到过一次它们。我也有类似的问题(这在Chrome上有效,而不是在FF中),但没有使用标记。
    HTTP/1.1 200 OK
    Date: Sun, 18 Jan 2015 22:11:04 GMT
    Server: Apache/2.4.7 (Ubuntu)
    X-Powered-By: PHP/5.5.9-1ubuntu4.5
    Set-Cookie: PHPSESSID=xxx; path=/; HttpOnly
    language=en; expires=Tue, 17-Feb-2015 22:11:04 GMT; Max-Age=2592000; path=/; domain=www.example.com
    currency=CAD; expires=Tue, 17-Feb-2015 22:11:04 GMT; Max-Age=2592000; path=/; domain=www.example.com
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0, public
    Pragma: no-cache
    Content-Encoding: gzip
    access-control-allow-methods: PUT, GET, POST, DELETE, OPTIONS
    access-control-allow-origin: *
    access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept
    Content-Length: 1515
    Connection: close
    Content-Type: text/html; charset=utf-8
    GET /example.php HTTP/1.1
    Host: www.example.com
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:34.0) Gecko/20100101 Firefox/34.0 FirePHP/0.7.4
    Accept: text/html, */*; q=0.01
    Accept-Language: en-US,en;q=0.5
    Accept-Encoding: gzip, deflate
    Referer: http://example.com/
    Origin: http://example.com
    x-insight: activate
    Connection: keep-alive
    Cache-Control: max-age=0
    HTTP/1.1 302 Found
    Date: Sun, 18 Jan 2015 22:12:26 GMT
    Server: Apache/2.4.7 (Ubuntu)
    X-Powered-By: PHP/5.5.9-1ubuntu4.5
    Set-Cookie: PHPSESSID=xxx; path=/; HttpOnly
    language=en; expires=Tue, 17-Feb-2015 22:12:26 GMT; Max-Age=2592000; path=/; domain=www.example.com
    currency=CAD; expires=Tue, 17-Feb-2015 22:12:26 GMT; Max-Age=2592000; path=/; domain=www.example.com
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0, public
    Pragma: no-cache
    Status: 302
    Location: https://www.example.com/index.php
    access-control-allow-methods: PUT, GET, POST, DELETE, OPTIONS
    access-control-allow-origin: *
    access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept
    Content-Length: 0
    Connection: close
    Content-Type: text/html
    OPTIONS /example.php HTTP/1.1
    Host: www.example.com
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:34.0) Gecko/20100101 Firefox/34.0 FirePHP/0.7.4
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: en-US,en;q=0.5
    Accept-Encoding: gzip, deflate
    Origin: http://example.com
    Access-Control-Request-Method: GET
    Access-Control-Request-Headers: x-requested-with
    x-insight: activate
    Connection: keep-alive
    Cache-Control: max-age=0