Articles of cors

来自React的快速POST请求返回空主体

你好,我正在做一个反应/expression应用程序。 我已经能够从我的服务器发出GET请求,但是,我无法发出POST请求。 当我这样做,我的服务器正在返回一个空的身体。 我有身体分析器作为依赖,接受JSON作为内容,但仍然没有运气与空的身体。 我的代码和服务器/客户端的依赖关系如下。 请让我知道,如果你们看到我不。 Index.js const express = require('express'); const path = require('path'); const app = express(); const bodyParser = require('body-parser'); //routes require('./routes/sendMessageToEmail')(app); require('./routes/helloWorld')(app); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); app.use(express.static(path.join(__dirname, 'client/build'))); app.get('*', (req, res) => { res.sendFile(path.join(__dirname+'/client/build/index.html')); }); const port = process.env.PORT || 1111; app.listen(port); 例如,当我在我的index.js文件中声明路由的地方切换命令时,在之后声明路由行 app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); 行,我得到一个不确定的反对一个空的身体。 邮政路线 […]

React Native / Node API:在发送之后无法设置标题

我遇到了一个与我的Node API交互的原生应用程序的问题。 当我尝试发布数据通过节点更新数据库中的某些值(然后转到存储过程)时,我得到一个500 – 在Node 中发送后,无法设置标题 。 我能find的所有东西都表示这可能是由于发送了两次响应。 我不认为这是这种情况。 我已经在邮递员testing,事情工作正常,它返回正确的返回数据200的状态。 我正在尝试将数据发布到API,如下所示: const myHeaders = new Headers(); myHeaders.append('Content-Type', 'application/json'); fetch(`http://localhost:3000/user/preferences`, { method: 'POST', headers: myHeaders, mode: 'cors', cache: 'default', body: JSON.stringify({ id: '1', minage: this.state.minageValue, maxage: this.state.maxageValue }) }) .then(response => response.json()) .then(body => console.log(body)) .catch(err => console.log(err)); 我在API端接收数据,并将数据传递给存储过程: function updatePreferences(req, res, next) { console.log(req); var […]

我不能让Cors中间件在我的Node.js应用程序中工作

我正在尝试使用Cors中间件,但它不工作 我遵循文档中的简单说明,但我仍然得到这个可怕的错误。 Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:63342' is therefore not allowed access. 谁能帮我? 这是我的后端API的index.js文件,我试图实现中间件。 const express = require('express'); const passport = require('passport'); const http = require('http'); const morgan = require('morgan'); const LocalStrategy = require('passport-local').Strategy; let path = require('path'); let mongoose […]

如何在请求的资源上出现“Access-Control-Allow-Origin”标题。 原因'null'因此不被允许访问。 在angular4?

我正试图从Fitbit获得授权。 当我使用Oauth2.0 前angularangular4 getAuthFromFitbit() { this.http.get(this.BASE_URL + "/fitbit").subscribe(res => { console.log(res.json()); });} 后端node.js 那么我得到这个问题:

即使预设了标题,所请求的资源上也不存在“Access-Control-Allow-Origin”标题

我从http:// localhost:3002服务器运行反应应用程序,并在http:// localhost:8080 / api / file中调用axios.post()动作来上传文件。 我使用expressJS作为后端。 还包括启用CORS的Cors模块。 app.use(cors({ origin: 'http://localhost:3002' })); 在客户端发出请求后,在chrome中显示以下错误 安慰 – ailed加载http:// localhost:8080 / api / file :否请求的资源上存在“Access-Control-Allow-Origin”头。 原因' http:// localhost:3002 '因此不被允许访问。 但是当我在networking上看到file upload并返回200 OK响应。 当我从expressJS中删除CORS头文件时,也是一样的。 如果请求完成,为什么显示CORS错误信息? 为什么不允许跨源请求,如果没有设置CORS头? 请帮忙!!!

Express Passport.js不保留会话中的用户对象

我有一个运行在端口3000上的Express应用程序。前端运行在端口80上,所以这是一个CORS应用程序。 用户存储在SQL服务器数据库中。 我使用护照作为本地策略的authentication方法,以及快速会话中间件。 该应用程序是一个单页面应用程序,发送到服务器的所有请求都通过ajax完成。 用户在页面上login并且发送证书,并且如果validation成功,则用户ID以及用户名和FullNmae应该被保持到会话。 我有很多这样的错误:最重要的是,login后,快递保存使用护照的用户名和其他数据到一个新的会话,并返回一个HTML片段,以取代页面上的身体标记。 但是,为了testing用户对象是否存在,我调用/ create-user路由,它说用户对象不在那里。 此外,新的会话开始于每个请求(我检查日志,并看到每次显示不同的会话ID)。 不仅如此,在某一时刻,我能够在浏览器中看到会话cookie,但是我再也看不到它了。 我试图回到我可以看到cookie的地步,但仍然没有出现! 我已经把我的头几个小时,不知道为什么deserializeUser没有被调用,为什么数据不被持久。 我哪里错了? 注意:一些明显的代码省略(app.listen(),require语句等) /* —— CONFIGURATIONS —— */ const app = express(); const mssqlConfig = JSON.parse(fs.readFileSync("mssql-config.json", "utf8")); passport.use(new LocalStrategy( function loginAuthentication(username, password, done) { let connPool = new mssql.ConnectionPool(mssqlConfig); connPool.connect(error => { if (error) {console.log(error); return done(error);} ps = new mssql.PreparedStatement(connPool); ps.input('username', mssql.NVarChar(20)); ps.input('password', […]

使用node.js代理二进制文件而不redirectstream量?

是否有可能用node.js代理一个二进制文件(在我的情况下audio/ mpeg),只是修改一些头,但不能通过你的代理服务器redirect文件的stream量? 因为我基本上只是想添加CORS头到远程audiofile,能够通过XHttpRequest打开它,这个代理似乎是一个很好的解决scheme: https : //github.com/gr2m/CORS-Proxy 但是,是否有可能在同一时间只添加标题和“redirect到”远程服务器上的二进制文件,以便实际的文件不通过代理传输?

获得CORS与JQuery客户端,Node / Express服务器一起工作的问题

我有一个问题得到跨来源资源共享与cookie的工作。 这是我的设置: 客户: $.ajax({ type: 'POST', url: '/processReq', data: params, xhrFields: {withCredentials:true}, crossDomain: true, success: … }); 我已经在浏览器中debugging了客户端,并且已经证实XMLHttpRequest.withCredentials实际上是正确的。 服务器: 我正在设置以下标题: res.header('Access-Control-Allow-Credentials', true); res.header('Access-Control-Allow-Origin', '*'); 我的问题是,我不能让会话cookie被浏览器存储,并发送到服务器的后续请求。 以下是浏览器中的响应标题: { "server": "nginx/1.2.6", "date": "Fri, 01 Feb 2013 23:46:07 GMT", "content-type": "application/json; charset=utf-8", "content-length": "306", "connection": "keep-alive", "x-powered-by": "Express", "access-control-allow-credentials": "true", "access-control-allow-origin": "*", "set-cookie": [ "id=s%3Azm1m…NXe4Lkr9rLw; Domain=api.mydomain.io; Path=/; Expires=Sat, […]

姜饼浏览器跨域响应串联错误

我们发现Gingerbread默认浏览器处理跨域请求的方式与大多数其他浏览器不同。 服务器代码适当地响应OPTIONS调用,所有正确的头文件访问控制头文件和一个200状态代码,并用200状态代码和适当的主体响应POST调用。 服务器是用Node编写的,使用Express,对于这个testing来说是非常小的: var express = require('express'); var http = require('http'); var app = express(); var server = http.createServer(app); // middleware app.use(express.logger('dev')); app.use(function(req, res, next) { var origin = req.get('origin'); if (origin) { res.header({ 'Access-Control-Allow-Origin': origin, 'Access-Control-Allow-Methods': 'GET,POST,OPTIONS', 'Access-Control-Allow-Headers': 'Content-Type', 'Access-Control-Allow-Credentials': true }); } if (req.method === "OPTIONS") return res.send(200); if (req.method !== "GET" && […]

哪些客户端默认可以/不能访问REST风格的Web服务?

我目前正在开发一个API,将在几周内投入生产。 我对REST比较陌生,开始阅读CORS,并意识到它会影响我。 客户端不能访问REST服务的条件是什么? 我一直在同一台服务器上使用示例html / js,并通过Postman(一个谷歌浏览器插件)来访问我的API。 到目前为止,我没有任何问题。 当API上线时,它将被托pipe在'api.myserver.com'上。 请求,一开始,将来自“app.myOTHERserver.com”。 如果我不使用像JSONP这样的CORS友好的方法或者允许我的域名的特殊“访问控制”头文件,这些请求是否会被拒绝? 从其他非浏览器客户端访问其余的API呢? 比如一个C#应用程序? 这些请求是否被默认允许? 假设我确实需要在服务器端添加“访问控制”头文件,为了允许上面描述的情况,当我的API上线时,让Web服务器(在我的情况下为NGINX)处理头文件(性能方面)更好,还是应该通过PHP或NodeJS添加它们?