allow cross origin

#include <iostream>
#include <cpprest/http_listener.h>
#include <cpprest/json.h>

using namespace web;
using namespace web::http;
using namespace web::http::experimental::listener;

class CrossOriginServer {
public:
    CrossOriginServer(const utility::string_t& url);
    pplx::task<void> open() { return m_listener.open(); }
    pplx::task<void> close() { return m_listener.close(); }

private:
    void handle_request(http_request request);

    http_listener m_listener;
};

CrossOriginServer::CrossOriginServer(const utility::string_t& url)
    : m_listener(url)
{
    m_listener.support(methods::GET, std::bind(&CrossOriginServer::handle_request, this, std::placeholders::_1));
    m_listener.support(methods::POST, std::bind(&CrossOriginServer::handle_request, this, std::placeholders::_1));
}

void CrossOriginServer::handle_request(http_request request)
{
    // Allow cross-origin requests
    web::http::http_response response(status_codes::OK);
    response.headers().set(U("Access-Control-Allow-Origin"), U("*"));
    response.headers().set(U("Access-Control-Allow-Methods"), U("GET, POST"));
    response.headers().set(U("Access-Control-Allow-Headers"), U("Content-Type"));

    // Your request handling logic here

    request.reply(response);
}

int main()
{
    utility::string_t url = U("http://localhost:8080");
    CrossOriginServer server(url);

    try {
        server.open().wait();
        std::wcout << U("Listening for requests at: ") << url << std::endl;

        std::this_thread::sleep_for(std::chrono::hours(24)); // Run for 24 hours (or any desired duration)

        server.close().wait();
    }
    catch (std::exception const& e) {
        std::wcerr << e.what() << std::endl;
    }

    return 0;
}