用于静态应用程序的cors代理和web服务器

corsa的Python项目详细描述


CORSA代理HTTP请求,添加CORS headers,也可以为静态Web应用程序服务。

功能:

  • 代理请求/proxy/http://host/pathhttp://host/path
  • 设置Access-Control-Allow-Origin
  • 对CORS飞行前请求的支持
  • 支持get、head、post、put、delete、options
  • 提供来自/app/--app-dir)的静态内容
  • 限制代理主机(--allow-proxy
  • 限制原点(--allow-origin

corsa由python和tornado提供动力,并根据mit许可证获得许可。

示例

您在./mywebapp中有一个静态web应用程序,它从http://imagesource.example加载图像并将其存储在本地couchdb中? 由于所有现代浏览器的跨域限制,您将无法访问图像数据,也无法访问couchdb。 跨源资源共享(cors)是一种解决此问题的机制,cors a将为您设置适当的cors头。

启动Corsa:

% corsa --app-dir ./mywebapp --allow-proxy http://imagesource.example,http://localhost:5984

将Web应用配置为使用^{TT10}$作为图像源,使用^{TT11}$作为CouchDB URL并转到^{TT12}$。

如果应用程序在http://localhost:8080

% corsa --allow-proxy http://imagesource.example,http://localhost:5984 --allow-origin http://localhost:8080

选项

代理特定的URL:

% corsa --allow-proxy http://httpbin.org --allow-origin ALL

% curl http://localhost:8888/proxy/http://httpbin.org/get -D -
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
[...]

可以将代理限制为特定的源。原产地应该是您向corsa提出请求的所在地。

% corsa --allow-proxy http://httpbin.org --allow-origin http://myexample

% curl http://localhost:8888/proxy/http://httpbin.org/get -H 'Origin: http://myexample' -D -
HTTP/1.1 200 OK
Access-Control-Allow-Origin: http://myexample
[...]

% curl http://localhost:8888/proxy/http://httpbin.org/get -H 'Origin: http://otherdomain' -D -
HTTP/1.1 403 Forbidden
[...]

您还可以使用corsa托管静态web应用程序:

% mkdir app
% echo 'hello' >> app/index.html
% corsa --app-dir app

% curl http://localhost:8888/app/index.html -D -
HTTP/1.1 200 OK
Content-Length: 6
[...]
Content-Type: text/html

hello

--allow-origin默认为SELF,这是corsa服务器url的别名。这样,默认情况下,您的web应用程序可以向所有--allow-proxy主机发出请求。

您可以允许所有具有ALL别名的源和代理主机:

% corsa --allow-proxy ALL --allow-origin ALL

% curl http://localhost:8888/proxy/https://github.com/ -D -
HTTP/1.1 200 OK
[...]

默认情况下,corsa会监听http://localhost:8888,但是可以使用--bind选项来更改它:

% corsa --bind :9999
% corsa --bind 0.0.0.0
% corsa --bind 0.0.0.0:9090

安装

corsa是用python编写的,需要Tornado。 它是用Python2.7/3.3和Tornado 3.1测试的。

corsa是hosted on pypi所以您可以使用以下命令安装它:

pip install corsa

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
实现接口方法时不允许java@Override   使用BuffereImage加载映像时java高ram使用率   java For循环混乱,为什么不是循环?   java Android网格视图字符串对齐问题   java如何将方法与比较类型的附加功能进行比较?   在Java Swing中放置JSepator后的间隙大小   java如何避免并发访问我的网站中的支付链接   java如何从现有的Unix服务器连接到FTP服务器?   Spring中的java用户相关bean定义   带有scribesjava库的wordpress Woocommerce REST API返回消费者密钥参数缺失错误消息   java我可以自动检测特定设备连接的串行端口吗?   Javafx棋盘游戏   java使用JTextPane显示HTML,支持SVG吗?   SpringBoot如何在java中将映射转换为实体对象?   如何使用java代码对xls文件进行密码保护   Java JPA(EclipseLink)如何在持久化实际实体之前接收下一个生成的值?   Javaservlet启动外部进程