Articles of 跨域

Socket.io xdomain https flashsockets

是否有可能与XDomain socket.io应用程序有一个安全的FlashSocket连接? 在socket.io-client上,我看到下面的注释: * The FlashSocket transport. This is a API wrapper for the HTML5 WebSocket * specification. It uses a .swf file to communicate with the server. If you want * to serve the .swf file from a other server than where the Socket.IO script is * coming from you need to use the […]

如何使用来自其他站点的login信息进行JavaScript请求

我有以下情况。 我有一个网站运行node.js用户可以login,然后执行任务使用各种JavaScript API调用。 当他们login时,我给他们分配一个cookie,这是在做所有的web请求时使用的,这样我可以跟踪他们已经做了多less请求。 现在我想让另一个网站B也能够使用由网站A提供的API。我所拥有的问题是网站B上的用户如何获得允许他们向网站A发出请求的cookie,而不必到站点A并在那里login。 如果我使用某个默认账户进行跨域GET请求login,我无法从中提取响应中分配的cookie。 如果可能的话,我会避免使用类似SECRET_KEY参数在从站点B到A的获取请求中,因为我使用节点会话模块,它根据Cookie加载会话。

$ http.get()调用的Node Express Cross Origin

我做了一个简单的节点服务器,我需要它作为$http.get()调用的交叉原点,所以我添加所需的标题到app.use作为详细信息在这个答案。 最后服务器代码是 – var express = require('express'); var app = express(); var port = process.env.PORT || 3000; app.use(express.static('.')); app.all('/', function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "X-Requested-With"); next(); }); app.listen(port); console.log('server runs on port: ' + port); 在我的index.html有angular色$http.get()调用另一个来源 – $http.get('http://itunes.apple.com/search', { term: 'johnson' }); 但仍然这个调用被浏览器拒绝并返回错误 – XMLHttpRequest cannot load https://itunes.apple.com/search. No 'Access-Control-Allow-Origin' header is present […]

跟踪两台不同服务器之间的用户

我有2个服务器: 1)使用Spring引导的端口8443上的Apache Tomcat服务器 2)端口443上的节点服务器 他们都是https。 现在应用程序的devise方式是服务器1处理login页面,服务器2处理仪表板 所以用户使用:https // localhost:8443 / loginlogin 并成功login后,我做了一个 window.open(https // localhost:443 / dashboard?userName = xyz,“_ self”); 将用户redirect到由节点服务器托pipe的仪表板。 现在我的问题是,如果用户直接点击https // localhost:443 / dashboard?userName = xyz,那么他可以访问错误的仪表板。 用户只能在login后才能访问仪表板。 但是我不能使用会话,因为会话不能在2台服务器之间共享。 那么如果用户在服务器1中闲置,他怎么能保持一个轨道?他可以看到服务器2中的仪表板? 此外,我正在计划购买一个域名,但我如何主办2端口? (8443&443) 我想要类似的东西 1)https //example.com/login(端口8443) 2)https://example.com/dashboard?userName=xyz(端口443)

使用Expressjs作为跨域Ajax调用的代理

我正在开发一个完全基于外部API的网站。 我没有任何服务器端的逻辑。 所有的数据将从外部API获取。 后端服务器主要用于资产pipe理和路由。 已经决定将nodejs与expressjs一起运行在后端。 我想知道在expressjs路由中需要做什么修改(作为代理),从浏览器到相应的站点的所有跨域ajax API调用,并将json数据路由回浏览器?

如何testingnode-webkit中的跨源数据?

我已经通过Nodetesting了所有的跨源数据,并取得了很大的成功。 但是,最近我遇到了Node无法解决数据请求的情况。 我正在使用getImageData()函数,它引发了跨源问题。 在其他的跨源问题上,Node可以成功处理请求,但是这个function似乎给了它麻烦。 另外,如果我将它与node-webkit打包并单独运行,则效果很好。 我确定有一个解释,但我找不到它。 为什么node-webkit可以工作,但是不能运行Node.js服务器? 如果不在本页面上添加代码,让我试着解释我在做什么。 我有一个我从中获取数据的Axis Camera。 它是Motion JPEG,它存储在我已经ID'd的img标签中。 数据来自http:// ip等等 我认为问题是, getImageData()函数是从img标签ID而不是外部的地方,这将反过来扔交叉原点标志。 我对么? 我该如何解决这个问题? 另外,有没有人知道一个好的方法来testingnode-webkit应用程序,而没有实际打包它们? 本质上,一个节点的WebKit模拟器?

AJAX – Set-Cookie不能用于相同的域,但path不同

浏览器不允许我这样做: 1)加载http://localhost:8080/myapp/page1 – >这将JSESSIONID cookie设置为path = / myapp和domain = localhost 2)通过AJAX请求我打电话GET http://localhost:3000/login?user=xxx – >在Chrome和Firebug的响应中,我看到:Set-Cookie: connect.sid = XXXXXXYYYYYY Path = / domain =本地主机 当我执行另一个Ajax调用时,例如http://localhost:3000/anotherCall (仍然保留在http://localhost:8080/myapp/page1 )时,浏览器会发送Cookie connect.sid头。 但是,它不! 任何想法为什么? 这两个cookie属于同一个域,唯一的区别是path,所以不应该有任何跨域问题。 另外我已经尝试在NodeJs响应中设置此标头。 同样的结果: res.header('Access-Control-Allow-Origin', "*"); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); res.header('Access-Control-Allow-Headers', 'Cookie, Content-Type, Authorization, Content-Length, X-Requested-With'); res.header('Access-Control-Expose-Headers', 'Set-Cookie, X-Powered-By'); 从Firebug和Chrome开发工具中检查Cookies信息,就好像浏览器根本没有存储connect.sid cookie。 我想知道是否假设域是不同的(一个是本地主机:8080和另一个本地主机:3000 …)

nodejs代理本地api调用外部restapi服务(不express.js)

我正在使用nodejs和默认项目文件/scripts/web-server.js运行angularjs(angular-seed)的演示应用程序(见下文) 我希望节点js代理/redirect到/ api的所有本地调用到外部Rest api端点http://www.mywebsite.com/api为了避免跨域起源策略。 我应该如何编辑下面的web-server.js来实现代理redirect? 我发现的所有例子都使用express.js。 我只使用node.js作为开发环境,所以我没有兴趣使用express.js。 默认web-server.js nodejs脚本: #!/usr/bin/env node var util = require('util'), http = require('http'), fs = require('fs'), url = require('url'), events = require('events'), request = require('request'); ; var DEFAULT_PORT = 8000; function main(argv) { new HttpServer({ 'GET': createServlet(StaticServlet), 'HEAD': createServlet(StaticServlet) }).start(Number(argv[2]) || DEFAULT_PORT); } function escapeHtml(value) { return value.toString(). replace('', '>'). […]

Angularjs + nodejs +护照跨域请求

我正在使用护照与Facebook战略进行身份validation。 问题不在于nodejs的后端,因为我已经testing了没有angularjs,一切正常,但每当angularjs进场,我会得到CORS错误。 Access-Control-Allow-Origin标题出现在请求的资源上。 起源host:8000因此不被允许访问。 我已经尝试了通过谷歌发现的大部分解决scheme,但到目前为止还没有真正起作用。 有没有人有一个想法可能是错的? 就我所知,这是通常对这类问题最常见的答案。 site.config(function($httpProvider) { $httpProvider.defaults.useXDomain = true; delete $httpProvider.defaults.headers.common['X-Requested-With']; }); 就像我说的,这不是nodejs错误。

服务器可以检查请求是否来自iframe(Node.js)?

我希望我的服务器能够检查来自iframe的请求 如果请求来自iframe,我希望我的服务器能够find该iframe的父域的域名 是否有上述可能,如果是的话,我怎么能在Node.js / Express.js服务器中实现这样的检查? 预先感谢您的任何帮助