javascript - 允许通过 AJAX 访问我的 API

标签 javascript php angularjs cors fuelphp

我有一个 API 可以在服务器上获取一些日期。

public function post_events()
{
    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Methods: GET, POST');
    header("Access-Control-Allow-Headers: X-Requested-With");

    $city = Input::post('city','all');
    $c = Model_chart::format_chart($city);
    return $this->response($c);
}

它在通常的 curl 方法上工作得很好。但我尝试在 Angular.js 上使用 $http 访问它,但出现了此错误。

XMLHttpRequest cannot load http://event.deremoe.com/vendor/events.json. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://app.event.chart' is therefore not allowed access.

如您所见,我已经在函数中添加了 header 。我还检查了curl,并且当我调用api时附加了 header Access-Control-Allow-Origin。

我在这里缺少什么吗?

更多信息:这是通过正常 curl 返回给我的 header 信息。

Remote Address:104.28.19.112:80
Request URL:http://event.deremoe.com/vendor/events.json
Request Method:OPTIONS
Status Code:404 Not Found

Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:accept, content-type
Access-Control-Request-Method:POST
Connection:keep-alive
Host:event.deremoe.com
Origin:http://app.event.chart
Referer:http://app.event.chart/
User-Agent:Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36

Response Headersview source
CF-RAY:16f687416fe30c35-SEA
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html; charset=UTF-8
Date:Thu, 25 Sep 2014 10:27:17 GMT
Server:cloudflare-nginx
Set-Cookie:__cfduid=d1a9e4283faacc0a2b029efef586b6b931411640837342; expires=Mon, 23-Dec-2019 23:50:00 GMT; path=/; domain=.deremoe.com; HttpOnly
Transfer-Encoding:chunked
X-Powered-By:PHP/5.4.30

最佳答案

浏览器首先对您的 api 进行飞行前选项调用,这就是它触发错误的原因:Access-Control-Allow-Origin。您可以在 api 上创建一个端点来接受所有 OPTIONS 请求,并且您还必须在那里设置 header ,就像在发布事件上一样:

header('Access-Control-Allow-Origin: *');

您还收到的状态代码是 404 Not Found。这意味着无法找到 OPTIONS 端点。

关于javascript - 允许通过 AJAX 访问我的 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26035638/

相关文章:

php - 3 个表之间的 Symfony Doctrine 关系

angularjs - AngularJS TypeScript 的 Visual Studio 2015 中没有 IntelliSense

javascript - 当在 then 函数内部分配 $scope 值时,数据绑定(bind)不起作用

angularjs - Angular 顺序按数字以ng-repeat中的文本排序

php - MYSQL从3个表中选择,但结果是减少。希望任何人都可以

php - 使用正则表达式和 DOMDocument 递归处理标记

javascript - 在页面加载时,JavaScript sort() 中的参数变得未定义

javascript - Meteor:onConnection,检查用户是否登录

javascript - jQuery Tokeninput 和 onFreeTaggingAdd 回调

javascript - 如何重新加载并等待元素出现?