用于静态应用程序的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第三方库


热门话题
JAVAutil。整数java的扫描器键盘输入   java通知运行后立即崩溃   java如何在一个只能由类修改而不能由其实例修改的类中生成静态变量?   数据库Java字段猜测   返回值周围的java括号为什么?   java Android更新通讯录中的联系人   一个消费者正在读取数据   java是否可以通过编程方式为蓝牙配对设置pin?   java Spring引导和buildResponseEntity()   java为什么序列化可以在没有实现可序列化的情况下工作   Java同步无助于相互排斥   twitter Java Twitter4J未在推文下显示源标签   为什么Javasocket不支持中断处理?