如何在CORS XMLHttpRequest中将%2C解析为逗号Access-Control-Allow-Headers

时间:2019-05-02 20:48:38

标签: javascript jquery cors xmlhttprequest

是否有一种方法可以为CORS请求的XMLHttpRequest提供自定义的响应头解析器?我正在尝试使用jQuery发出CORS请求,并认为接收服务在返回Access-Control-Allow-Headers标头的方式中存在错误。所有允许的标头均以逗号分隔,最后两个则以转义逗号%2C分隔。这导致我的XMLHttpRequest引发以下异常(不注意源地址或目标地址或X-FOO标头,因为它们代替了实际值):

Access to XMLHttpRequest at 'https://service.example.com/activity' from origin 'http://client.example.com' has been blocked by CORS policy: Request header field X-FOO is not allowed by Access-Control-Allow-Headers in preflight response.

以下是飞行前响应中的Access-Control-Allow-Headers标头:

Access-Control-Allow-Headers: Origin,Accept,X-Requested-With,Content-Type,Access-Control-Request-Method,Access-Control-Request-Headers,content-type%2Cx-foo

我无权访问目标服务,有什么方法可以告诉XMLHttpRequest在预检响应标头中将%2C解析为普通逗号吗?我的jQuery请求如下所示:

$.ajax({
    method: method,
    url: `${endpoint}/${activity}`,
    crossDomain: true,
    dataType: "json",
    contentType: "application/json",
    headers: {
        "X-FOO": token
    },
    xhrFields: {
        withCredentials: true
    }
});

1 个答案:

答案 0 :(得分:0)

  

是否有一种方法可以为CORS请求的XMLHttpRequest提供自定义的响应头解析器?

否。

如果有的话,您可以编写一个允许您喜欢的头文件。