用于静态应用程序的cors代理和web服务器
corsa的Python项目详细描述
CORSA代理HTTP请求,添加CORS headers,也可以为静态Web应用程序服务。
功能:
- 代理请求/proxy/http://host/path到http://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