re-uploading work
This commit is contained in:
203
web/scripts/test-cors.sh
Executable file
203
web/scripts/test-cors.sh
Executable file
@@ -0,0 +1,203 @@
|
||||
#!/bin/bash
|
||||
# CORS and Proxy Testing Script
|
||||
# This script helps diagnose CORS and proxy configuration issues
|
||||
|
||||
set -e
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
print_header() {
|
||||
echo -e "\n${BLUE}========================================${NC}"
|
||||
echo -e "${BLUE}$1${NC}"
|
||||
echo -e "${BLUE}========================================${NC}\n"
|
||||
}
|
||||
|
||||
print_success() {
|
||||
echo -e "${GREEN}✓${NC} $1"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}✗${NC} $1"
|
||||
}
|
||||
|
||||
print_info() {
|
||||
echo -e "${YELLOW}ℹ${NC} $1"
|
||||
}
|
||||
|
||||
# Check if jq is installed
|
||||
if ! command -v jq &> /dev/null; then
|
||||
print_error "jq is not installed. Install it for better JSON formatting."
|
||||
JQ_AVAILABLE=false
|
||||
else
|
||||
JQ_AVAILABLE=true
|
||||
fi
|
||||
|
||||
print_header "Attune CORS & Proxy Diagnostic Tool"
|
||||
|
||||
# Test 1: Check if API server is running
|
||||
print_header "Test 1: API Server Availability"
|
||||
if curl -s -f http://localhost:8080/health > /dev/null 2>&1; then
|
||||
print_success "API server is running on localhost:8080"
|
||||
|
||||
if [ "$JQ_AVAILABLE" = true ]; then
|
||||
echo -e "\nHealth response:"
|
||||
curl -s http://localhost:8080/health | jq .
|
||||
fi
|
||||
else
|
||||
print_error "API server is NOT running on localhost:8080"
|
||||
print_info "Start the API server with: ./scripts/start_services_test.sh"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Test 2: Check if Vite dev server is running
|
||||
print_header "Test 2: Vite Dev Server Availability"
|
||||
if curl -s -f http://localhost:3000 > /dev/null 2>&1; then
|
||||
print_success "Vite dev server is running on localhost:3000"
|
||||
else
|
||||
print_error "Vite dev server is NOT running on localhost:3000"
|
||||
print_info "Start the dev server with: cd web && npm run dev"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Test 3: Test Vite proxy for /auth route
|
||||
print_header "Test 3: Vite Proxy - /auth Route"
|
||||
echo "Testing: http://localhost:3000/auth/login"
|
||||
echo ""
|
||||
|
||||
AUTH_RESPONSE=$(curl -s -w "\n%{http_code}" -X POST http://localhost:3000/auth/login \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"login":"admin","password":"admin"}' 2>&1)
|
||||
|
||||
HTTP_CODE=$(echo "$AUTH_RESPONSE" | tail -n1)
|
||||
RESPONSE_BODY=$(echo "$AUTH_RESPONSE" | head -n-1)
|
||||
|
||||
if [ "$HTTP_CODE" = "200" ]; then
|
||||
print_success "Proxy working! Got 200 response"
|
||||
if [ "$JQ_AVAILABLE" = true ]; then
|
||||
echo "$RESPONSE_BODY" | jq .
|
||||
else
|
||||
echo "$RESPONSE_BODY"
|
||||
fi
|
||||
elif [ "$HTTP_CODE" = "401" ]; then
|
||||
print_info "Proxy working but credentials invalid (401)"
|
||||
print_info "This means the proxy is working, just need correct credentials"
|
||||
else
|
||||
print_error "Proxy test failed with HTTP $HTTP_CODE"
|
||||
echo "$RESPONSE_BODY"
|
||||
fi
|
||||
|
||||
# Test 4: Test direct API access with CORS
|
||||
print_header "Test 4: Direct API Access with CORS Headers"
|
||||
echo "Testing: http://localhost:8080/auth/login with Origin header"
|
||||
echo ""
|
||||
|
||||
CORS_RESPONSE=$(curl -s -w "\n%{http_code}" -X POST http://localhost:8080/auth/login \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Origin: http://localhost:3000" \
|
||||
-d '{"login":"admin","password":"admin"}' \
|
||||
-v 2>&1)
|
||||
|
||||
if echo "$CORS_RESPONSE" | grep -q "Access-Control-Allow-Origin"; then
|
||||
print_success "CORS headers present in response"
|
||||
echo "$CORS_RESPONSE" | grep -i "access-control"
|
||||
else
|
||||
print_error "No CORS headers found in response"
|
||||
print_info "This might cause issues if bypassing the proxy"
|
||||
fi
|
||||
|
||||
# Test 5: CORS Preflight (OPTIONS request)
|
||||
print_header "Test 5: CORS Preflight Request"
|
||||
echo "Testing OPTIONS request to http://localhost:8080/auth/login"
|
||||
echo ""
|
||||
|
||||
OPTIONS_RESPONSE=$(curl -s -i -X OPTIONS http://localhost:8080/auth/login \
|
||||
-H "Origin: http://localhost:3000" \
|
||||
-H "Access-Control-Request-Method: POST" \
|
||||
-H "Access-Control-Request-Headers: Content-Type" 2>&1)
|
||||
|
||||
if echo "$OPTIONS_RESPONSE" | grep -q "Access-Control-Allow-Origin: http://localhost:3000"; then
|
||||
print_success "CORS preflight successful for localhost:3000"
|
||||
elif echo "$OPTIONS_RESPONSE" | grep -q "Access-Control-Allow-Origin"; then
|
||||
ALLOWED_ORIGIN=$(echo "$OPTIONS_RESPONSE" | grep "Access-Control-Allow-Origin" | cut -d: -f2- | tr -d ' \r')
|
||||
print_error "CORS configured for different origin: $ALLOWED_ORIGIN"
|
||||
else
|
||||
print_error "CORS preflight failed - no Access-Control-Allow-Origin header"
|
||||
fi
|
||||
|
||||
echo -e "\nFull preflight response headers:"
|
||||
echo "$OPTIONS_RESPONSE" | grep -i "access-control" || echo "No CORS headers found"
|
||||
|
||||
# Test 6: Check browser environment variables
|
||||
print_header "Test 6: Environment Configuration"
|
||||
|
||||
if [ -f "web/.env" ]; then
|
||||
print_info "Found web/.env file:"
|
||||
cat web/.env
|
||||
else
|
||||
print_success "No web/.env file (using defaults)"
|
||||
fi
|
||||
|
||||
if [ -f "web/.env.local" ]; then
|
||||
print_info "Found web/.env.local file:"
|
||||
cat web/.env.local
|
||||
else
|
||||
print_success "No web/.env.local file"
|
||||
fi
|
||||
|
||||
# Test 7: Check api-config.ts
|
||||
print_header "Test 7: Frontend API Configuration"
|
||||
|
||||
if [ -f "web/src/lib/api-config.ts" ]; then
|
||||
echo "Current api-config.ts BASE URL setting:"
|
||||
grep -A 1 "API_BASE_URL" web/src/lib/api-config.ts || print_error "Could not find API_BASE_URL"
|
||||
|
||||
echo -e "\nWITH_CREDENTIALS setting:"
|
||||
grep "WITH_CREDENTIALS" web/src/lib/api-config.ts || print_error "Could not find WITH_CREDENTIALS"
|
||||
else
|
||||
print_error "web/src/lib/api-config.ts not found!"
|
||||
fi
|
||||
|
||||
# Test 8: Check Vite config
|
||||
print_header "Test 8: Vite Proxy Configuration"
|
||||
|
||||
if [ -f "web/vite.config.ts" ]; then
|
||||
echo "Proxy configuration in vite.config.ts:"
|
||||
grep -A 10 "proxy:" web/vite.config.ts | head -n 15 || print_error "Could not find proxy config"
|
||||
else
|
||||
print_error "web/vite.config.ts not found!"
|
||||
fi
|
||||
|
||||
# Summary
|
||||
print_header "Summary & Recommendations"
|
||||
|
||||
echo "1. API Server: $(curl -s -f http://localhost:8080/health > /dev/null 2>&1 && echo -e "${GREEN}Running${NC}" || echo -e "${RED}Not Running${NC}")"
|
||||
echo "2. Vite Dev Server: $(curl -s -f http://localhost:3000 > /dev/null 2>&1 && echo -e "${GREEN}Running${NC}" || echo -e "${RED}Not Running${NC}")"
|
||||
echo ""
|
||||
|
||||
print_info "Recommended Development Setup:"
|
||||
echo " 1. Start API: ./scripts/start_services_test.sh"
|
||||
echo " 2. Start Frontend: cd web && npm run dev"
|
||||
echo " 3. Access UI at: http://localhost:3000"
|
||||
echo " 4. All requests will be proxied automatically"
|
||||
echo ""
|
||||
|
||||
print_info "Checklist for CORS Issues:"
|
||||
echo " [ ] API server running on localhost:8080"
|
||||
echo " [ ] Vite dev server running on localhost:3000"
|
||||
echo " [ ] OpenAPI.BASE = \"\" in web/src/lib/api-config.ts"
|
||||
echo " [ ] OpenAPI.WITH_CREDENTIALS = true"
|
||||
echo " [ ] Vite proxy configured for /api and /auth"
|
||||
echo " [ ] No VITE_API_BASE_URL environment variable set"
|
||||
echo " [ ] Browser DevTools shows requests to localhost:3000 (not 8080)"
|
||||
echo ""
|
||||
|
||||
print_info "If still having CORS errors:"
|
||||
echo " 1. Restart Vite dev server (changes require restart)"
|
||||
echo " 2. Clear browser cache and localStorage"
|
||||
echo " 3. Check browser console for actual request URL"
|
||||
echo " 4. Review web/CORS-TROUBLESHOOTING.md for detailed guide"
|
||||
Reference in New Issue
Block a user