Код: Выделить всё
MyRequireAuth on
Мы используем axios для нашего js-клиента и отправляем запросы к конечным точкам /myapi. Перехватываем запрос axios и добавляем X-Auth-Token в заголовки.
Код: Выделить всё
import axios from "axios";
let axiosInstance = axios.create({ withCredentials: true });
axiosInstance.interceptors.request.use(function (config) {
if (config.method == "get") {
return config;
}
let token = "";
let name = "xauthtoken=";
let ca = document.cookie.split(";");
for (let i = 0; i < ca.length; i++) {
let c = ca[i];
while (c.charAt(0) === " ") {
c = c.substring(1);
}
if (c.indexOf(name) === 0) {
token = c.substring(name.length, c.length);
}
}
config.headers["X-Auth-Token"] = token;
// config.headers["Access-Control-Allow-Origin"] = "https://local-example.com:4443";
return config;
});
Во время тестирования мы хотим использовать /myapi из наш пользовательский интерфейс, работающий на локальном хосте. Теперь запрос поступает не из того же домена, и он начинает выдавать ошибку CORS для вызовов POST и PUT.
Когда я отлаживаю детали в проверке режиме просмотра FireFox я смог увидеть, когда есть вызов POST, axios сначала отправляет запрос OPTIONS, а затем POST. Когда axios отправляет OPTIONS, он не отправляет X-Auth-Token.
Я хочу сказать apache, что если есть вызов методов OPTIONS и HEAD, не проверяйте аутентификацию. Отключите эти два метода.
Я пробовал
Код: Выделить всё
MyRequireAuth on
Header set Access-Control-Allow-Origin "https://local-example.com:4443"
Код: Выделить всё
$ curl -I -X OPTIONS https://example.com/myapi/v1/fetch/
HTTP/1.1 302 Found
Date: Tue, 18 Jun 2024 21:15:08 GMT
P3P: policyref="https://policies.example.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC GOV"
Set-Cookie: token_it=4c57fbb3ccf9f40e; domain=.example.com; expires=Tue, 18 Jun 2024 21:45:08 GMT; path=/; secure; httponly
Set-Cookie: xauthtoken=d6607ccf794fefd1; domain=.example.com; expires=Tue, 18 Jun 2024 21:45:08 GMT; path=/; secure; httponly
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=31536000; includeSubDomains
Location: https://example.com/oauth2/ausdqo06iBskQbfv0696/v1/authorize?response_type=code&scope=openid%20profile%20offline_access%20groups&redirect_uri=https%3A%2F%2Fapi%2Fcallback&client_id=0oa9umjnyyswQaZ6e1t7&state=eyJ0YXJnZXRfdXJsIjogImh0dHBzOi8vc3RnLXNhbmR5dWktMDEubmV0b3BzLmNvcnAuZ3ExLnlhaG9vLmNvbTo0NDMvb2t0YS9hcGkvdjEvY29sby9iZjEvY2x1c3Rlci9ncmMvZmV0Y2gvIiwgImNzcmZfdG9rZW4iOiAiZDY2MDdjY2Y3OTRmZWZkMSJ9&nonce=rBT-jhkrWdIFBGwjjxTUFKZsb4N_74lCcV8XosyHdQA&prompt=login
Cache-Control: private
Content-Length: 3181
Connection: close
Content-Type: text/html
curl: (8) Weird server reply
Как сказать Apache, чтобы он не выдавал CORS, даже если запрос поступает из другого домена?
Подробнее здесь: https://stackoverflow.com/questions/786 ... -in-apache
Мобильная версия