javascript - 无法在 angularJS 中为 $http.get 添加自定义 header

标签 javascript angularjs http

所以,我正在执行此请求:

$http({
    method: 'GET',
    url: query,
    headers: { 'api-key': 'test-api-key' }
});

在 Chrome 开发者工具“网络”选项卡中,我可以看到正在发送的请求:

Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8,sv;q=0.6
Access-Control-Request-Headers:accept, api-key
Access-Control-Request-Method:GET
Cache-Control:no-cache
Connection:keep-alive
Host:my-host.myhost.net
Origin:http://localhost:24153
Pragma:no-cache
Referer:http://localhost:24153/
User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36
X-FirePHP-Version:0.0.6

问:可能有哪些原因导致请求头未添加到请求中?

最佳答案

您正在使用自定义 header 发出跨源 Ajax 请求。

这使得它成为一个复杂的请求,因此浏览器必须发送 a pre-flight OPTIONS request获得发出跨源 Ajax 请求的权限。

如果服务器正确响应 OPTIONS 请求,浏览器将发出带有您想要的附加 header 的 GET 请求。

关于javascript - 无法在 angularJS 中为 $http.get 添加自定义 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34330985/

相关文章:

javascript - JQuery 在 show() 函数之前加载图像

javascript - 如何将 HTML 页面下载为图像?

javascript - 如何使用 AngularJS 中的 Promises 使同步工作流程工作?

javascript - 为什么这个 plnkr 中没有 Angular 载荷?

java - 使用 ICAP 和 Java 发送文件并接收响应

http - SPDY Web 服务器基准测试工具

http - golang 接受 gzip 后的数据

javascript - 显示 Rails 项目中助手内行的隐藏

mysql - PHP MySQL 数据到 AngularJS

Javascript 访问同一个类的函数