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 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同