【问题标题】:Angular GET request: preflight request abortedAngular GET 请求:预检请求中止
【发布时间】:2016-03-25 04:38:39
【问题描述】:

我正在使用 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 响应中缺少什么,为什么会中止?

更新:

以下是原始 GET 请求的标头。我看不到 OPTIONS 标题。

UPD2:

我能够从 Chrome 开发工具中获得此错误消息,用于 OPTIONS 请求:

net::ERR_CONNECTION_REFUSED

【问题讨论】:

  • 试着把自己限制在一个问题上。很难说出第二个问题的答案是什么,因为您的问题缺乏上下文。我猜这是因为您正在离开该页面,但无法通过您提供的信息来判断。
  • 当您从浏览器拨打电话时,您能否在您的开发工具中打开网络选项卡并显示标头、响应和请求?
  • @JoshBeam 感谢您的回复。我已经用请求标头更新了我的问题
  • @Quentin 谢谢你的回答。我需要在帖子中添加哪些信息?
  • 这是来自 Chrome 的吗?通常我发现 Chrome devtools 网络选项卡比其他浏览器更有帮助,哈哈:p 不确定你是否有它。但是,第二个问题:您是否尝试过清除缓存?我相信浏览器会缓存 OPTIONS 请求。

标签: javascript angularjs


【解决方案1】:

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

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

特别是,在以下情况下会预检请求:

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

MDN

【讨论】:

    猜你喜欢
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    • 2021-08-25
    • 1970-01-01
    • 2018-05-14
    • 2015-08-10
    • 2018-11-30
    相关资源
    最近更新 更多