Bic*_*Bic 12 javascript cors angularjs deployd
我目前正在阅读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存在一些问题,并且必须将头配置为运行跨域请求.结果,我在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(跨源请求)自动配置的,只要请求不包含无效的自定义标头,它就会发送相应的标头信息.我很确定我的请求不包含无效的自定义标头:
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标头设置或其他任何内容.
jav*_*ity 11
Bic,将您的deployd版本升级到版本0.6.10.这对我有用.我现在能够处理get请求.看起来AngularJS代码和Adam Freeman的书并不是错误.
在书中,他确实提到他在http://www.apress.com/9781430264484上包含deployd程序和源代码下载.这是版本0.6.9.我相信它能正常使用它.它比试图找到0.6.10版本更容易..这就是我所做的.如果你想要那个版本,这里是:
https://www.versioneye.com/nodejs/deployd/0.6.10
它不是安装程序,因此您必须将其粘贴到deployd目录中,替换node_modules.
| 归档时间: | 
 | 
| 查看次数: | 5754 次 | 
| 最近记录: |