• Debian 11 is approaching its end-of-life (vendor EOL date - August 31, 2026). Plesk Obsidian 18.0.80 will be the last release to support it.
    If you are running Plesk Obsidian on Debian 11, we recommend you upgrade those servers to Debian 12 using our dist-upgrade tool.
  • We plan to deprecate and remove the support for XML RPC protocol versions earlier than 1.6.9.1 in Plesk Obsidian 18.0.82. We strongly recommend that you update all existing integrations using earlier versions of the XML RPC protocol to comply with the version 1.6.9.1 specification.

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