gpt4 book ai didi

javascript - 已部署 - 通过 AngularJS CORS 检索的数据

转载 作者:可可西里 更新时间:2023-11-01 02:04:13 24 4
gpt4 key购买 nike

我目前正在阅读 Adam Freeman 的“Pro AngularJS”。在阅读这些示例时,他让读者使用 Angular(当然)和 Deployd 服务器资源创建一个体育用品商店应用程序。 Deployd 资源设置为返回要填充到模型中的 JSON 数据。我正在使用 NodeJS 来运行我的服务器。它当前设置在端口 5000 (http://localhost:5000/sportsstore/app.html)。 Deployd 资源在端口 5500 (http://localhost:5500/products) 上运行。当点击 Deployd 时,响应如下:

[
{ "name": "Kayak", "description": "A boat for one person", "category": "Watersports", "price": 275, "id": "a1c999fc248b2959" },
{ "name": "Lifejacket", "description": "Protective and fashionable", "category": "Watersports", "price": 48.95, "id": "61303717cfad182e" },
{ "name": "Soccer Ball", "description": "FIFA-approved size and weight", "category": "Soccer", "price": 19.5, "id": "0fb5f67bdcbd992f" },
{ "name": "Corner Flags", "description": "Give your playing field a professional touch", "category": "Soccer", "price": 34.95, "id": "24385d315dd388b4" },
{ "name": "Stadium", "description": "Flat-packed 35,000-seat stadium", "category": "Soccer", "price": 79500, "id": "500fb6805905a856" },
{ "name": "Thinking Cap", "description": "Improve your brain efficiency by 75%", "category": "Chess", "price": 16, "id": "637d8a1f42e6fa1c" },
{ "name": "Unsteady Chair", "description": "Secretly give your opponent a disadvantage", "category": "Chess", "price": 29.95, "id": "73393312ec7dfab7" },
{ "name": "Human Chess Board", "description": "A fun game for the family", "category": "Chess", "price": 75, "id": "7871d02a662b0915" },
{ "name": "Bling-Bling King", "description": "Gold plated, diamon-studded King", "category": "Chess", "price": 1200, "id": "b59a3389a0e248bd" }
]

我正在尝试通过使用 $http.get 检索此数据:

$http.get("http://localhost:5500/products")
.success(function (data) { ... })
.error(function (error) { ... });

但是,这会一直返回错误:

XMLHttpRequest cannot load http://localhost:5500/products. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:5000' is therefore not allowed access. 

研究表明 Angular 和 CORS 存在/曾经存在一些问题,并且必须配置 header 才能运行跨域请求。因此,我将以下内容添加到我的 app.config 中:

$http.defaults.useXDomain = true;
delete $http.defaults.headers.common['X-Requested-With']; // this isn't needed anymore, but was put here as a just-in-case

尽管添加了这些设置,我仍然收到错误。 Deployd 文档说它是为 CORS ( Cross-Origin Requests ) 自动配置的,只要请求不包含无效的自定义 header ,它就会发送适当的 header 信息。我很确定我的请求不包含无效的自定义 header :

Accept: application/json, text/plain, */*
Cache-Control: max-age=0
Origin: http://localhost:5000
Referer: http://localhost:5000/sportsstore/app.html
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36

我的问题:为了让 Deployd 配置为允许处理 CORS 请求,我是否需要进行一些其他配置?这本书没有指定任何特殊的 Angular header 设置或任何其他内容。

最佳答案

Bic,升级你的 deployd 版本到 0.6.10 版本。这对我有用。我现在能够处理获取请求。这似乎不是 AngularJS 代码的错误,也不是 Adam Freeman 的书的错误。

在书中,他确实提到他在 http://www.apress.com/9781430264484 上包含了源代码下载的已部署程序。 .那是版本 0.6.9。我确定它可以正常工作。这比试图找到 0.6.10 版本更容易。我就是这样做的。如果你想要那个版本,这里是:

https://www.versioneye.com/nodejs/deployd/0.6.10

它不是安装程序,因此您必须将其粘贴到部署目录中,替换 node_modules

关于javascript - 已部署 - 通过 AngularJS CORS 检索的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23346863/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com