{"id":17621234,"url":"https://github.com/michaelfig/cacao","last_synced_at":"2025-04-13T23:25:05.284Z","repository":{"id":56826854,"uuid":"160459614","full_name":"michaelfig/cacao","owner":"michaelfig","description":"Cacao (CORS Access-Control-Allow-Origin) Proxy","archived":false,"fork":false,"pushed_at":"2019-02-21T00:15:50.000Z","size":233,"stargazers_count":3,"open_issues_count":1,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-27T13:41:52.984Z","etag":null,"topics":["cors-anywhere","dart2","mjpeg"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/michaelfig.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-12-05T04:14:36.000Z","updated_at":"2020-12-20T22:45:16.000Z","dependencies_parsed_at":"2022-09-13T08:31:36.933Z","dependency_job_id":null,"html_url":"https://github.com/michaelfig/cacao","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelfig%2Fcacao","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelfig%2Fcacao/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelfig%2Fcacao/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelfig%2Fcacao/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/michaelfig","download_url":"https://codeload.github.com/michaelfig/cacao/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248795318,"owners_count":21162748,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cors-anywhere","dart2","mjpeg"],"created_at":"2024-10-22T20:11:59.728Z","updated_at":"2025-04-13T23:25:05.261Z","avatar_url":"https://github.com/michaelfig.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cacao (CORS Access-Control-Allow-Origin) Proxy\n\nCacao is a localhost Cross-Origin (CORS) proxy.  It allows Javascript running in a web browser to access a remote HTTP resource without cross-origin restrictions.  It runs on several different platforms, and essentially works by adding a `Access-Control-Allow-Origin: *` header to an HTTP response.\n\n## IP Camera Streaming\n\nThe main use case is to access a remote streaming MJPEG URL published by an IP Camera, via an `\u003cimg\u003e` tag pointing to Cacao.  Without Cacao, this image data is usually marked as cross-origin, and therefore cannot be used as the source for a WebRTC stream.\n\nWith Cacao, an `\u003cimg crossorigin\u003e` can be copied to a `\u003ccanvas\u003e` and then (since CORS is allowed) sent by the browser via WebRTC.  Try loading the (MJPEG sample)[static/mjpeg.html] in your browser to experiment with this capability, and to understand the vanilla Javascript source code.\n\nThe [Mediasoup Broadcast Example](https://github.com/michaelfig/mediasoup-broadcast-example) will eventually add support for using Cacao to request media to stream.\n\n## Usage\n\n### Cacao Proxy\n\nCacao can be run as a localhost proxy server on Linux (and other Unix-like), MacOS, and Windows.\n\nDownload a binary package from the [Cacao releases](https://github.com/michaelfig/cacao/releases), if you just want to use the proxy (and not change its code).\n\nIf you are a developer, you can run Cacao directly from sources in this project, but you will first need to install the [Dart SDK](https://www.dartlang.org/tools/sdk#install):\n\n```\n$ dart --version\n$ bin/cacao --help\n```\n\n### Cacao Proxy App\n\nSee the [Cacao Proxy App](https://github.com/michaelfig/cacao_app) for a graphical app for controlling a builtin Cacao proxy on your mobile device.\n\nMichael FIG \u003cmichael+cacao@fig.org\u003e, 2018-12-05\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaelfig%2Fcacao","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmichaelfig%2Fcacao","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaelfig%2Fcacao/lists"}