Articles of cors

CORS节点js问题

经过了多个post,我仍然找不到正确的答案。 检查了CORS扩展的文档。 我有以下服务器代码启动并运行: var WebSocketServer = require("ws").Server var http = require("http") var express = require('express') var cors = require('cors') var app = express(); app.use(cors()); var port = process.env.PORT || 9000 var server = http.createServer(app) server.listen(port) var count = 0; var clients = {}; var rooms = {}; var wss = new WebSocketServer({server: server}) wss.on("connection", function(ws) […]

Angular问题和“否”Access-Control-Allow-Origin'标题“ – 使用OAuth 2,Passport,Express和Node

我有一个使用节点上运行的OAuth 2的Web应用程序。 使用EJS模板,我能够正确地创build一个工作stream,提示用户login,validation,然后执行“GetUser”GET命令并将输出转储到屏幕上。 最近我试图删除EJS,并希望得到AnguarJS的工作。 目前我已经删除了EJS并实现了Angular,但是有很多奇怪的事情发生,我不知道为什么! 当我的用户点击“login”,他们应该被带到另一个网站,他们login到使用OAuth 2.这个过程工作正常与EJS节点,但是我的angular度控制器加载,正确的部分被加载,但没有数据。 使用Chrome DEV工具查看此过程,我看到以下错误 XMLHttpRequest cannot load http://website/oauth/authorize?… No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access. 更奇怪的是,在networking标签中,我可以看到正确的请求URL! 如果我复制并粘贴到另一个选项卡我的“GetUser”命令执行,但然后节点崩溃,我的网页失败。 我试过不同的浏览器,启用CORS,configurationCORS。 我知道问题是与Angular,因为我可以成功地使用相同的代码与EJS。 我已经把我的Angular代码放在下面,任何帮助将不胜感激! 服务器端 app.js var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = […]

CORS用node.js和socket.io阻塞

我最近开始学习node.js和socket.io。 我跟着一个简单的教程,socket.io有,而且在我的电脑上运行,一切正常。 但是,我决定将客户端部分上传到服务器进行testing,这就是问题出现的地方。 我想在Web主机上运行聊天客户端,然后在我的计算机或其他主机上运行服务器。 基本上,我计划端口转发服务器,并让客户端运行在网页上。 我打开我的端口端口转发,似乎工作,但我每次都在网页上的错误。 Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://24.151.51.34:3000/socket.io/?EIO=3&transport=polling&t=1437399007343-0. (Reason: CORS request failed). 我一直在搞乱代码,希望能够在开始自己的项目之前find解决这个问题的办法,但是我找不到一个办法。 客户端代码是: <!doctype html> <html> <head> <title>Socket.IO chat</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; } body { font: 13px Helvetica, Arial; } form { background: #000; padding: 3px; […]

随机错误的请求400与Socket.io 1.0.6错误

我在端口8082上使用Node.js,在端口80上使用Apache。 一切工作正常,并比浏览器开始显示错误消息“400错误请求”,CORS错误。 服务器正在设置CORS头。 正如你所看到的我也使用Redis适配器。 var io = require('socket.io').listen(8082); io.adapter(redis({ host: '127.0.0.1', port: 6379 })); io.set('origins', 'domain.com:*'); 不能说为什么有些时候一切正常,有些时候没有。 当Socket.io尝试从池中升级到websocket时,总是发生错误。 当我从https://cdn.socket.io/socket.io-1.0.6.js使用客户端时,我得到了更less的错误。 当我使用socket.io-1.0.6.js的本地参考时,错误发生频率更高。 找不到错误模式。 在erros之后,我重新启动Node.js服务器,尝试一些请求,一次又一次的工作,错误。 有些时候再次运行而不重新启动服务器。 请求标头示例 Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding gzip, deflate Accept-Language pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3 Cookie io=RjKzZ6Y1OTQeSEsPAAAL; SGM_DESENV=cb5ae798c2f6f5d3f38c6ed16a6e4696 Host 200.238.251.79:8082 Origin http://200.238.251.79 Referer http://200.238.251.79/maximiliano/sgp/admin/custodiacompartilhada/add User-Agent Mozilla/5.0 (Windows NT 5.1; rv:29.0) Gecko/20100101 Firefox/29.0 响应标题示例 Access-Control-Allow-Credentials true Access-Control-Allow-Origin http://200.238.251.79 Connection keep-alive […]

AngularJS强制Firefox / Safari下载文件,而不是在浏览器中打开

我有一个PDF文件,可以在除Firefox / Safari以外的所有浏览器中下载。 它会在浏览器窗口中打开它,而不是下载该文件。 我的网站运行在node.js之上,并在Azure中托pipe。 用户下载的文件来自Azure blob存储,所以我怀疑这可能是一个CORS问题。 下面是我的客户端代码: <a href="{{fileURL}}" class="btn btn-default" download="myfile.pdf">Download File</a> 这里是服务器端代码: $scope.fileURL = 'https://myblob.blob.core.windows.net/8282020/myfile.pdf'; 更新:我可以通过在下面的帮助中设置Azure中的blob属性来添加内容处置,并且将处置显示为“附件”,但是在FireFox / Safari中它仍然在浏览器中打开。 这是否可能被阻止,因为Azure Blob存储可能被视为CORS? 更新2:添加以下内容到我的HTML标签似乎在FireFox(而不是Safari),这是正确的方式来处理浏览器 type="application/octet-stream" 更新3:通过节点设置内容configuration和内容types似乎正在工作。 我必须问,这是正确的方法吗? blobSvc.setBlobProperties(containerName, filename, { contentDisposition: 'attachment', contentType: 'application/octet-stream' }, function (error, result, response) { // result code here…. })

Socket.io不设置CORS头(s)

我知道这个问题已经被问了几次了。 但是,我无法得到任何这些解决scheme的工作。 我正在运行node.js和socket.io的标准安装。 (来自Amazon EC2上的yum) 问题在于Chrome正在回退到xhr轮询,并且这些请求需要一个可用的CORSconfiguration。 但是,我似乎无法得到它的工作。 我的Web服务器运行在端口80上,而node.js(socket.io)在端口81上运行。我试图让socket.io使用源策略,如你所见。 我也尝试使用“*:*”作为起源,没有运气。 这是我的代码: var http = require('http'); var io = require('socket.io').listen(81, {origins: '*'}); io.configure( function(){ io.set('origin', '*'); }); io.set("origins","*"); var server = http.createServer(function(req, res) { io.sockets.emit("message", "test"); res.writeHead(200); res.end('Hello Http'); console.log("Message recieved!"); }); server.listen(82); io.sockets.on('connection', function(client) { console.log("New Connection"); }); 非常感谢你!

CORS – 与Angular和Express的http选项错误

我正在尝试从Angularjs客户端向我的API进行POST,我在另一个域中运行的服务器上有这个configuration: app.use(function(req, res, next) { res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, OPTIONS, DETELE'); res.setHeader('Access-Control-Allow-Headers', '*'); next(); }); 发送到服务器的标题是: OPTIONS /api/authenticate HTTP/1.1 Host: xxxx.herokuapp.com Connection: keep-alive Access-Control-Request-Method: POST Origin: http://127.0.0.1:5757 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 Access-Control-Request-Headers: accept, content-type Accept: */* Referer: http://127.0.0.1:5757/login Accept-Encoding: gzip, deflate, sdch Accept-Language: […]

Access-Control-Allow-Origin不允许来源http:// localhost

我正在尝试从backbone.js执行到我的node.js服务器。 但是,在控制台中出现以下错误: Origin http://localhost is not allowed by Access-Control-Allow-Origin. 我添加了以下内容到我的node.js服务器: var allowCrossDomain = function(req, res, next) { res.header('Access-Control-Allow-Origin', "http://localhost"); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); res.header('Access-Control-Allow-Headers', 'Content-Type'); }; app.configure(function() { app.use(allowCrossDomain); }); 但它仍然返回相同的错误。 但是,即使这样做确实有效,但它似乎不是理想的解决scheme,因为我希望来自各地的用户能够发送请求。

hapi.js Cors Pre-flight不返回Access-Control-Allow-Origin标题

我有一个使用(Dropzone js)的ajaxfile upload。 将文件发送到我的hapi服务器。 我意识到浏览器发送了一个PREFLIGHT OPTIONS METHOD。 但我的hapi服务器似乎不发送正确的响应头,所以我得到铬上的错误。 这是我在铬上得到的错误 XMLHttpRequest cannot load http://localhost:3000/uploadbookimg. 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:4200' is therefore not allowed access. 这是hapi js路由处理程序 server.route({ path: '/uploadbookimg', method: 'POST', config: { cors : true, payload: { output: 'stream', parse: […]

HTTP响应头中'Allow'和'Access-Control-Allow-Methods'之间的区别?

我使用ExpressJS for NodeJS编写了一个RESTful API。 我正在使用BackboneJS来调用这个API。 这是我的API通过OPTIONS返回的示例头: Access-Control-Allow-Headers:Content-Type Access-Control-Allow-Origin:http://localhost Allow:GET,PUT,DELETE Connection:keep-alive Content-Length:14 Content-Type:text/html; charset=utf-8 Date:Sun, 19 Aug 2012 13:52:35 GMT X-Powered-By:Express 我已经修改了标题以包含首先出现的两个访问控制允许字段。 其余部分由express自动生成,包括允许字段。 我能够没有问题的GET。 但是,当我尝试使用BackboneJS进行PUT或DELETE时,遇到: Method PUT is not allowed by Access-Control-Allow-Methods. Method DELETE is not allowed by Access-Control-Allow-Methods. 当然,我可以修改我的响应头包括这两个方法来解决这个问题。 但是我希望理解这些与ExpressJS基于绑定到路由的自动添加的基本“允许”之间的区别。 有什么不同?