【发布时间】:2014-06-07 02:25:15
【问题描述】:
我有一个位于 Web 服务器上的 php 文件,该文件具有以下代码以允许从其他域访问它:
header('content-type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
当我从测试服务器发出请求时,我会在 Chrome 开发工具上得到响应
> XMLHttpRequest cannot load http://beta.dean.technology/proxy.php. No
> 'Access-Control-Allow-Origin' header is present on the requested
> resource. Origin 'http://localhost' is therefore not allowed access.
我提出的一个示例请求是JSFiddle
$.ajax({url: 'http://beta.dean.technology/proxy.php',type:"POST",data: '{}',contentType:"application/json",dataType:"json"})
我还使用了在线 HTTP 标头检查器,他们的回复是“Access-Control-Allow-Origin: *”。我也将此文件放在不同的服务器上,结果仍然相同。正常访问url即可访问该文件。
有没有人对这个问题有任何想法。
编辑 1: PHP 源文件 http://beta.dean.technology/proxySource.txt
【问题讨论】:
-
我最近一直在使用 CORS,遇到了诸如此类的飞行前请求的各种问题。我建议查看JSONP,因为这对我的发展有很大帮助。
-
我的代码就像一个代理来解决这个问题,效果很好,直到我把它放到部署服务器上。它用于发布数据并获取结果。不幸的是 JSONP 不支持 POST
-
您是否有说明 JSONP 不支持 POST 的消息来源?我正在使用 AJAX
$.post请求使用 JSONP 没问题。
标签: javascript php jquery ajax cors