points by Sophira 1 day ago

> ...there are ways to produce request bodies that are valid JSON even if the browser forces you into a different format...

The browser basically never forces you into a particular format. You don't even need to do the trick with the form stuff that the sibling was talking about. Consider the following JavaScript:

    var xhr = new XMLHttpRequest();
    var url = "http://localhost:12345/endpoint";
    xhr.open("POST", url, true);
    xhr.setRequestHeader('Content-Type', 'multipart/form-data');
    xhr.send('{"hello":"world"}');

No trickery required, it just does it.

[Edited to illustrate my point better.]

RagingCactus 1 day ago

You can do that, but my understanding is you can't get the browser to attach cookies to your request in this way, while you can with forms. Do you agree?

  • Sophira 1 day ago

    I haven't actually investigated that (and I'm not able to do so right now), so I couldn't tell you for sure.

    If that's the case, then yes, the forms method would be 'better'.

xg15 1 day ago

Interesting. Is this still sent as a "safe" request though or does it trigger a preflight request etc?

  • Sophira 1 day ago

    If it was one of the requests that would trigger a preflight normally, then yes, it would trigger a preflight. But the code as shown doesn't do that because "multipart/form-data" is one of the allowed MIME types that can bypass these preflights.