Giter Club home page Giter Club logo

Comments (7)

harel avatar harel commented on July 23, 2024 1

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.

davidszotten avatar davidszotten commented on July 23, 2024

Hi,

Nameko generally encourages extension by subclassing the Extensions and Entrypoints. 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.

tino avatar tino commented on July 23, 2024

Ah, that sounds like a sensible approach. Thanks!

from nameko.

tino avatar tino commented on July 23, 2024

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.

davidszotten avatar davidszotten commented on July 23, 2024

re latest vs master: oh dear, that's been lying around for a while. will try to get a release out. thanks!

from nameko.

harel avatar harel commented on July 23, 2024

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.

lagelalegal avatar lagelalegal commented on July 23, 2024

@harel please you look the issue #471 about the nameko-cors.

from nameko.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.