用于静态应用程序的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限制C++代码访问JNI中的某些类   Android上的java DateFormat:不可解析的日期   通过json进行java迭代,并为其他请求调用多个API   Netbeans中的java JavaFX项目引发异常“输入流不能为null”   多线程Java newFixedThreadPool解释   |在java字符串中无法识别。split()方法   Java中的原始包装器类是否被视为引用类型?   Java swing。如何在intellij idea GUI设计工具中重写组件方法   数组乘矩阵   java将30GB的XML文件分割成小块XML   java通过一棵树递归找到一个节点,并返回指向该节点的路径   java如何将可观察的<Observable<List<T>>转换为可观察的<List<T>>   使用java在web服务器上更改php文件中的字符串?   java希望开发像tomcat这样的servlet容器   java希望提高编程的数学技能