Tag: cors

在Node.js / Express和AngularJS中创buildCORS请求

我已经看到很多堆栈溢出的答案,说设置响应头会让你“CORS”request.But没有解决scheme为我工作。我写了下面的代码: //Server.js Code var express = require('express'), app = express(); app.all('*',function(req, res, next) { res.setHeader("Access-Control-Allow-Origin", "*"); res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); res.setHeader('Access-Control-Allow-Credentials', true); res.setHeader('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS'); next(); 我试图从客户端使用$ http访问URL中的内容: //Controller.js $http.get('http://domainA.com/a/ipadapi.php?id=135&client=ipad').success(function(response){ alert("I got response"); }); 它在控制台中显示以下错误。 XMLHttpRequest cannot load http://domainA.com/a/ipadapi.php?id=135&client=ipad The 'Access-Control-Allow-Origin' header has a value 'http://example.xxxxx.com' that is not equal to […]

节点js服务器safari客户端连接失败

我有一个简单的html-js <-ajax-> nodejs服务器循环作为我的应用程序核心的testing基础。 它适用于带有浏览器的Windows 8:IE11,Chrome45,firefox40,opera31 ..并在Safari 5.1.7上失败 这是客户端代码 <html> <head> <meta charset="UTF-8"> <script language="javascript"> var url="http://127.0.0.1:1001"; function sendData(rawData) { var strout=""; var data=encodeURIComponent(rawData); var xhr = new XMLHttpRequest(); xhr.open('POST', url, true); xhr.onreadystatechange=function(){ if (xhr.readyState==4 && xhr.status==200){ strout=decodeURIComponent(xhr.responseText); document.getElementById("opResult").innerHTML="srv-sent "+strout } } xhr.send(data); alert("sent = "+rawData) } //+++++++++++++++++++ function send(){ var v=document.getElementById("ta").value; sendData(v); } </script> </head> […]

与angular和节点的Oauth

我有麻烦得到oauthangular度工作。 当我直接进入链接到浏览器 http://localhost:8080/auth/twiter 我能够使用oauth进行连接,并得到回应但是,当我试图用下面的代码angular度做到这一点 login_twitter : function login_twitter(){ var deferred = $q.defer(); $http.get('auth/twitter') .success(function (data,status){ if(status === 200 && data.state=='success'){ user = data.user.name; defered.resolve(); } else{ deferred.reject(); } }) .error(function (data){ deferred.reject(); }); return deferred.promise; 我从浏览器中得到一个错误 XMLHttpRequest cannot load ….link… No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed […]

如何使angular2在成功的预检请求之后正确地触发正确的callback

在我的angular2应用程序中,我试图做一个跨域Ajax调用。 尽pipe调用成功,但在angular2端,错误callback总是被触发,而不是成功的callback。 这里是代码: this.http.post('http://localhost:3000/tasks/add', '["' + task + '"]', {headers: headers}).subscribe( data => null, err => alert("err"), () => alert("succ") ); 在浏览器控制台中,我看到了这个: XMLHttpRequest cannot load http://localhost:3000/tasks/add. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access. 服务器端在nodejs中实现,它包含以下内容来处理预检 router.options('/add', (req, res, next) => { console.log('!OPTIONS'); var headers = {}; // […]

Angularjs CORS与Node,Express,Oauth2和Passport有关

最近我们决定把我们的前端从EJS切换到Angular将前端和后端完全分开。 这样做,我们开始在多个浏览器中遇到几个问题。 在后端,我们使用快递的节点与护照和oauth2。 对于前端我们正在尝试使用angular度。 EJS使用express.render工作,但我们更愿意直接使用express作为RESTful API。 我在localhost:8080和localhost:3000本地运行后端和前端。 当只使用后端(使用EJS,而不是angular度),我可以成功地去浏览器的后端端口,通过passport-oauthlogin,并redirect到帐户页面(从供应商login屏幕),我的JSON数据通过res.json呈现。 问题是我无法从移除EJS后从前端用户界面。 我已经试过configurationCORS十几种不同的方式,而使用三种不同的浏览器,没有运气。 以下三个片段是我在浏览器控制台中通过$ http和$ resource从前端访问localhost:8080时出现的错误(请参阅下面的代码)。 三个代码片段下面的图片是节点控制台告诉我,当试图从每个不同的浏览器访问端口8080 … 铬: XMLHttpRequest cannot load 'PROVIDER-DETAILS-URL'. No 'Access-Control-Allow- Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. 火狐: Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at 'PROVIDER-DETAILS-URL'. (Reason: CORS header […]

在快递中不能set.header

这东西已经困扰了我好几天了,而且我快要疯了……我无法为set.header('Access-Control-Allow-Origin')或其他任何头文件。 我需要这个来访问一个远程API。 我已经下载了铬Cors扩展,并启用时,一切正常。 当我禁用时,我得到了美丽的错误:没有“访问控制允许来源”标题出现在请求的资源。 原因' http:// localhost:8080 '因此不被允许访问。 我已经尝试了一些事情,甚至Cors NPM模块,仍然是一样的。 这是我的代码: var express = require('express'); var app = express(); app.use('/dist', express.static(__dirname + '/dist')); app.use(function(req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE'); res.header('Access-Control-Allow-Headers', 'Content-Type'); next(); }); var port = process.env.PORT || 8080; app.get('*', function(req, res, next) { console.log(req.get('Access-Control-Allow-Origin')); res.sendFile(__dirname + '/dist/index.html'); }); app.listen(port); […]

NodeJS – CORS中间件`origin`未定义

我有一个应用程序使用cors npm软件包作为中间件。 我有这样的设置: if(process.env.NODE_ENV === 'production') { var whitelist = ['http://mywebsite.com', 'https://mywebsite.com'] var corsOptions = { origin: (origin, callback) => { var originIsWhitelisted = whitelist.indexOf(origin) !== -1; console.log('ORIGIN: ', origin); // => undefined callback(originIsWhitelisted ? null : 'Bad Request', originIsWhitelisted) }, credentials:true } app.use(cors(corsOptions)); } 我的corsOptions中的origin参数是undefined 。 为什么是这个,我该如何解决?

Node.js服务器应用程序使用cors,express和google api在azure部署后不工作

我有一个node.js服务器api应用程序,部署到azure色后不工作。 它最初依靠google.api获取数据,之后将数据存储在数组中,并通过响应快速获取调用将其发送到客户端。 最初我用: const express = require('express'); const app = express(); const cors = require("cors"); const _ = require("lodash"); const port = 30000; app.use(cors()); 在localhost上运行得很好。 对于部署,遵循教程后,我将其更改为: const express = require('express'); const app = express(); const cors = require("cors"); const _ = require("lodash"); const port = process.env.PORT || 80; var http = require('http'); app.use(cors()); var server […]

angular度选项HTTP预检“同一域”?

我目前对如何angular度的(jQuery的)预检选项调用是“select”或select执行请求之前执行混淆。 我有一个正常的RESTful API调用(api.domain.co) 我在我的hosts文件/etc/hosts创build了一个主机条目127.0.0.1 local.domain.co 。 我已经创build了自签名证书: http://www.akadia.com/services/ssh_test_certificate.html 我已经将我的mac中的证书configuration为可信: http://abetobing.com/blog/port-forwarding-mac-os-yosemite-81.html 我configuration了我的优胜美地端口转发规则: http://abetobing.com/blog/port-forwarding-mac-os-yosemite-81.html 我明白,从浏览器的angular度来看(Chrome): 我有一个angular度的应用程序从https://local.domain.co加载一个可信的证书,有一个调用https://api.domain.co/user一切看起来绿色的证书,我仍然得到一个预检OPTIONS调用我的api.domain.co服务器是CORS支持的节点resitfy服务器 一切正在工作…但 我想摆脱OPTIONS预检任何指针?

使用Express代理,如何更改相对的url?

为了避免使用客户端JavaScript代码的典型CORS问题,我使用了一个nodejs express服务器。 该服务器包含以下代码: var app = express(); app.all('/Api/*', function (req, res) { proxy.web(req, res, { target: 'https://www.myserver.com', changeOrigin:true }); }); 那么这个做的是将任何以/Api开头的调用redirect到我的服务器。 但是,这也将Api附加到URLpath,所以Api/getData变成https://www.myserver.com/Api/getData 有没有办法Api相对url的Api部分? 最终结果将是Api/getData成为https://www.myserver.com/getData 这将允许我通过更改相对urlpath的第一部分来定位多个服务器。 像这样的东西: Api/getData – > https://www.myserver.com/getData OtherApi/getData/for/some/path – > https://www.some-other-server.com/getData/for/some/path 这当然适用于所有请求types,不仅适用于GET 谢谢!