doudang2817 2015-07-31 10:16
浏览 95
已采纳

XMLHttpRequest无法加载:只能使用Ajax jQuery中的头文件

I try to get JSON data from my own API, from a $.ajax method with jQuery. I must have a header 'Authorization-api-key' in my request otherwise I'll have a 401 status code.

$.ajax({
        type: "GET",
        headers: {'Authorization-api-key' : 'key'},
        dataType: "json",
        crossDomain: true,
        url: "http://urlofmyonlineapi.com/api/ressource",
        success: function (data) {
            alert(data);
        }
});

I have read several threads on stackoverflow about CORS and the'XMLHttpRequest cannot load' problem. So, in my API I have added in response these headers (I use Slim Framework):

$app->response->headers->set('Access-Control-Allow-Origin', '*');
$app->response->headers->set('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
$app->response->headers->set('Access-Control-Allow-Headers', '*');
$app->response->headers->set('Access-Control-Allow-Credentials', 'true');

The problem

If I put any header in $.ajax with 'headers: {...}' argument, I have two errors in my browser console:

  1. 'OPTIONS' error
  2. 'XMLHttpRequest cannot load' error

If I remove headers, I haven't error but I have my 401 status code. If I remove headers AND my API's authentification with the key in request's headers, I get my data.

  • 写回答

1条回答 默认 最新

  • duanping1920 2015-08-05 13:32
    关注

    I have solved the problem: my API didn't accept OPTIONS request. (Ajax with jQuery need to make an OPTIONS pre-request)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败