Отключить аутентификацию для метода OPTIONS в ApacheApache

Ответить
Anonymous
 Отключить аутентификацию для метода OPTIONS в Apache

Сообщение Anonymous »

У нас есть сторонняя аутентификация, и она настроена в apache.conf, как показано ниже.

Код: Выделить всё

MyRequireAuth on

означает, что когда кто-либо отправляет запрос в /myapi, он должен быть проверен MyRequireAuth и ему нужен X-Auth-Token в заголовки запросов.
Мы используем 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;
});
Он отлично работает, когда мы развертываем пользовательский интерфейс и API на одном сервере.
Во время тестирования мы хотим использовать /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"

Но, похоже, это не работает, он все равно пытается проверить метод OPTIONS.

Код: Выделить всё

$ 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
Я также добавил Access-Control-Allow-Origin, чтобы удалить ошибку CORS. Но не повезло :(
Как сказать Apache, чтобы он не выдавал CORS, даже если запрос поступает из другого домена?

Подробнее здесь: https://stackoverflow.com/questions/786 ... -in-apache
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Apache»