Angular在HTTP请求中发送身份验证令牌时如何不发送OPTION

时间:2017-05-30 14:21:57

标签: javascript angularjs cors

遇到CORS问题,尝试使用GET令牌执行Authorization请求,但OPTIONS有问题。想知道在向其他服务器请求GET时如何不发送OPTIONS?

$http({
        url: request_data.url,
        type: request_data.method,
        withCredentials: true,
        headers: {
            'Authorization': localStorage.getItem('Auth'),
            'Content-Type': 'application/json; charset=utf-8'
        },
        crossDomain: true
    }).then(function(response) {
        //process your data here
        vm.prodData = response.data;
        console.log(response.data);
    });

我无法发送请求,因为CORS问题,可能是由于标题Authorization部分。

2 个答案:

答案 0 :(得分:0)

你不能。

Authorization标题不是"安全",因此您无法在未经许可的情况下将其包含在跨源请求中。

preflight OPTIONS request可以请求许可。

您正在做一些不寻常的潜在风险,因此您必须更改发出请求的服务器,以便它告诉浏览器可以发出请求。

答案 1 :(得分:-1)

据我所知,当您尝试CORS请求时,它将始终首先发送OPTIONS请求以检查您是否允许发出请求,您必须在服务器端处理该问题,例如在php中我执行以下操作:

if($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
    header( "HTTP/1.1 200 OK" );
    exit();
}

这样,如果客户端发送OPTIONS请求,它将自动发送200 OK响应,然后它将等待正确的请求(GET,POST等)