如何以及在何处启用CORS?

时间:2014-07-16 06:26:34

标签: jquery apache cors

我正在尝试从不在我的域中的api获得响应。

$.ajax({
                type: "GET",
               url: "http://stage.developmentcheck.org/api/project_monitoring_detail",
               data:{'project_id':'16'},
               error: function (response) {
                        alert('Error: There was a problem processing your request, please refresh the browser and try again');
                },
                success: function (response) {
            console.log(response);
               }
        });

所以错误说 Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://stage.developmentcheck.org/api/project_monitoring_detail?project_id=16. This can be fixed by moving the resource to the same domain or enabling CORS. 到目前为止我只使用了html,但由于我使用ajax从api获取数据,请赐教我在哪里启用CORS以及如何启用? 我试过添加 Header set Access-Control-Allow-Origin "*" 在httpd.conf中但它没有用。

2 个答案:

答案 0 :(得分:1)

http://enable-cors.org/

你确实可以通过apache来实现。不要忘记双方都启用它(服务器 - 客户端)。检查开发人员工具的网络选项卡中的响应标题

服务器端:

  

要使用Apache将CORS授权添加到标头,只需添加即可   <Directory><Location><Files>内的以下行   或者服务器配置的<VirtualHost>部分(通常位于   * .conf文件,例如httpd.conf或apache.conf),或者在.htaccess文件中:

Header set Access-Control-Allow-Origin "*"

您是否已将其添加到<Directory><Location><Files><VirtualHost>内?你不能把它放在httpd.conf中。另一个选项是将其放在您想要的文件夹中的.htaccess文件中(例如api文件夹)

jQuery示例:

$.ajax({
    type: "GET",
    url: "http://stage.developmentcheck.org/api/project_monitoring_detail",
    data:{'project_id':'16'},
    crossDomain: true,        
    error: function (response) {
        alert('Error: There was a problem processing your request, please refresh the browser and try again');
    },
    success: function (response) {
        console.log(response);
    }
});

答案 1 :(得分:0)

你可以用PHP做到这一点。只需添加标题(“Access-Control-Allow-Origin:*”);在PHP脚本的开头。虽然如果您的PHP设置被某些严格的系统管理员等搞砸或控制,这将无效。