• If you are still using CentOS 7.9, it's time to convert to Alma 8 with the free centos2alma tool by Plesk or Plesk Migrator. Please let us know your experiences or concerns in this thread:
    CentOS2Alma discussion
  • Please beaware of a breaking change in the REST API on the next Plesk release (18.0.62).
    Starting from Plesk Obsidian 18.0.62, requests to REST API containing the Content-Type header with a media-type directive other than “application/json” will result in the HTTP “415 Unsupported Media Type” client error response code. Read more here

Issue Plesk API don't support CORS preflight OPTIONS Request

lippoliv

Basic Pleskian
Hey there,
I'am going to write an Angular2-Module for Plesk API for my own small Needs.
I noticed that Plesk don't Support the CORS preflight OPTIONS request: https://www.html5rocks.com/en/tutorials/cors/

Is there any Option to allow that request so I can continue my work?

(For this development I have rent an own vServer with en web host licence. Would be bad to stop now for unknown time.)

This is my current Code:
Code:
private getHeaders(): RequestOptions {
    let headers: Headers = new Headers();

    headers.append('Content-Type', 'text/xml');
    headers.append('HTTP_PRETTY_PRINT', 'TRUE');
    headers.append('HTTP_AUTH_LOGIN', this.user);
    headers.append('HTTP_AUTH_PASSWD', this.password);
    headers.append('Access-Control-Allow-Origin', '*');

    return new RequestOptions({
        headers: headers
    });
}

private request(request: string, version: string): Observable<Response> {
    let template: string = '<?xml version="1.0" encoding="UTF-8"?><packet version="%s">%s</packet>';
    request              = sprintf(template, version, request);

    let url = sprintf('https://%s.%s', this.prefix, this.postfix);
    return this.http.post(url, request, this.getHeaders());
}

public createClient(company: string, lastname: string, firstname: string, user: string, password: string, callback: Function) {
    let template: string = "<customer><add><gen_info><cname>%s</cname><pname>%s %s</pname><login>%s</login><passwd>%s</passwd><status>0</status><country>DE</country></gen_info></add></customer>";
    let request: string  = sprintf(template, company, lastname, firstname, user, password);

    this.request(request, '1.6.5.0').map((response: Response) => response.text()).subscribe(function (data: string) {
        console.log(data);

        callback();
    });
}

And then outside of that module:

Code:
    generateHostingPackage() {
        let plesk: Plesk = this.plesk;

        plesk.createClient(this.company, this.lastname, this.firstname, this.user, this.pw, function () {
            console.log('ready');
        });
    }
 
Back
Top