用于静态应用程序的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 Spinner选定值未上载到firebase数据库   java如何通过bukkit中的配置添加消息?   java在SharedReference中保存列表的泛型类型   javascript Java小程序未定义   swt在Java中构建控制台应用程序   java OAuth同意屏幕没有突然显示,没有错误?   java webview选择文件安卓不工作   java Spring boot JPA如何从同一连接添加多个数据库?   java JDBC DB2驱动程序计时器线程处于阻塞状态   java我在vscode中运行flatter时看到一个错误在phone中运行应用程序somone能否帮助我plz   Java:生成JSON:如何避免生成不完整的JSON   java Date compareTo()方法始终返回1   当使用Junit runner运行测试时,java Spring自动连线失败   java Android/Sockets如何将信息从主UI线程发送到socket线程?   java Android内存声明全局变量   java如何在JBoss中拥有多个具有相同JNDI名称的数据源?   python在Java中嵌入CPython时,为什么会挂起?   java如何提供深度模拟对象?   java“find:smallint,expected:integer”Hibernate对informix数据库的验证在短时间内失败