繁体   English   中英

角度GET请求:飞行前请求已中止

[英]Angular GET request: preflight request aborted

我正在使用Angular 1.4.8从RESTfull API获取数据。 为了进行用户身份验证,我们决定使用自定义HTTP标头:

 var requestConfig = {
  headers: {
      "authorization-token": "A317C3D6-74B1-DA99-FE55-8141E95D3085"
  }
};

现在,我正在尝试发出GET请求:

 $http.get(config.apiUrl+'/api/v1/orders/', requestConfig).success(function(data){
        table.orders = data;
    });

并在Firebug中查看以下请求:

在此处输入图片说明

我了解到,如果您尝试从另一台服务器获取数据,浏览器会发出这些飞行前OPTIONS请求。 在我的情况下,Angular应用程序位于127.0.0.1:80上,而Node.js服务器位于127.0.0.1:6673上,所以据我所知,它是跨域请求

如果您尝试通过curl发出OPTIONS请求,则会收到以下响应:

HTTP/1.1 200 OK
X-Powered-By: Express
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Cache-Control, Pragma, Origin,  
Authorization, Content-Type, X-Requested-With, authorization-token
Access-Control-Allow-Methods: GET, PUT, POST, OPTIONS
Allow: GET,HEAD,POST
Content-Type: text/html; charset=utf-8
Content-Length: 13
ETag: W/"d-7cCV5tLYsy8ebraCH4f8nQ"
Date: Thu, 24 Mar 2016 19:56:49 GMT
Connection: keep-alive

因此,我的问题是:

1)如果删除自定义HTTP标头,为什么不调用OPTIONS请求?

2)OPTIONS响应中缺少什么,为什么中止了?

UPD:

这是原始GET请求的标头。 我看不到OPTIONS标头。

在此处输入图片说明

UPD2:

我能够从Chrome开发工具中收到针对OPTIONS请求的错误消息:

net::ERR_CONNECTION_REFUSED

如果删除自定义HTTP标头,为什么不调用OPTIONS请求?

自定义HTTP标头是要求进行预检的触发器之一。

特别是,在以下情况下,将对请求进行预检:

  • 它使用GET,HEAD或POST以外的方法。 另外,如果POST用于发送请求类型为application / x-www-form-urlencoded,multipart / form-data或text / plain以外的Content-Type的请求数据,例如POST请求将XML有效负载发送给服务器使用application / xml或text / xml,则对请求进行预检。
  • 在请求中设置自定义标头 (例如,请求使用标头,例如X-PINGOTHER)

MDN

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM