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 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥15 DruidDataSource一直closing
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据