Comments (7)
If anyone gets here from Google, as I did, I used this code snippet as a base of a slightly larger component that auto registers OPTIONS endpoints and manages the various headers via decorator:
https://github.com/harel/nameko-cors
from nameko.
Hi,
Nameko generally encourages extension by subclassing the Extension
s and Entrypoint
s. In this case, perhaps something like
# HttpRequestHandler lives in nameko.web.handlers
class CorsHttpRequestHandler(HttpRequestHandler):
def response_from_result(self, *args, **kwargs):
response = super(CorsHttpRequestHandler, self).response_from_result(*args, **kwargs)
response.headers.add('Access-Control-Allow-Origin', '*') # or whatever
return response
cors_http = CorsHttpRequestHandler.decorator
from nameko.
Ah, that sounds like a sensible approach. Thanks!
from nameko.
For people wondering why this doesn't work (as I did): it won't work on 2.2.0, but you have to get the latest version from master...
Edit: and for future reference, this is a full development implementation, allowing everything:
class CorsHttpRequestHandler(HttpRequestHandler):
def handle_request(self, request):
self.request = request
return super(CorsHttpRequestHandler, self).handle_request(request)
def response_from_result(self, *args, **kwargs):
response = super(CorsHttpRequestHandler, self).response_from_result(*args, **kwargs)
response.headers.add("Access-Control-Allow-Headers",
self.request.headers.get("Access-Control-Request-Headers"))
response.headers.add("Access-Control-Allow-Credentials", "true")
response.headers.add("Access-Control-Allow-Methods", "*")
response.headers.add("Access-Control-Allow-Origin", "*")
return response
cors_http = CorsHttpRequestHandler.decorator
# usage:
class MyService(object):
name = "my_service"
@cors_http('GET', '/ping/')
def ping(self, request):
return "pong"
from nameko.
re latest vs master: oh dear, that's been lying around for a while. will try to get a release out. thanks!
from nameko.
Quick note - the above repository (https://github.com/harel/nameko-cors) has been updated to resolve a bug with OPTIONS requests going through the entire request flow instead of returning an empty body.
from nameko.
@harel please you look the issue #471 about the nameko-cors
.
from nameko.
Related Issues (20)
- Why using dnspython 1.x instead of 2.x ? HOT 8
- need upgrade to support python 3.10 HOT 2
- Publisher crashing when exchange is provided and RabbitMQ is down
- Nameko crashes when consuming illegal messages HOT 6
- [ DOUBT ] Events Pub / Sub - How can I make a consumer only run one event at a time
- from nameko.rpc import rpc class GreetingService: name = "greeting_service" def hello(self, name): return "Hello, {}!".format(name)
- Timer work on master process or every process? HOT 2
- dnspython dependency version overly restrictive HOT 3
- "verify_amqp_uri" in the module "nameko.amqp.utils" had been removed? HOT 2
- Should HttpRequestHandler print out the exception to the browser? HOT 2
- nameko multiprocess problem HOT 1
- Do you die? we need you to improve Nameko Library HOT 5
- DB Migrations not working with Flask-Migrate HOT 2
- Linking nameko and golang by RPC HOT 1
- dnspython version HOT 1
- nameko run faild when httpx installed
- event_handler should be agnostic to dispatching service
- Drop support for Python 3.5 through 3.7
- directly connect to a RabbitMQ cluster
- Error after eventlet update to 0.34.x
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nameko.