Próbuję wysłać pliki na mój serwer z żądaniem postu, ale gdy je wysyła, powoduje błąd:
Żądanie pola nagłówka Content-Type nie jest dozwolone przez Access-Control-Allow-Headers.
Więc przejrzałem błąd i dodałem nagłówki:
$http.post($rootScope.URL, {params: arguments}, {headers: {
"Access-Control-Allow-Origin" : "*",
"Access-Control-Allow-Methods" : "GET,POST,PUT,DELETE,OPTIONS",
"Access-Control-Allow-Headers": "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"
}
Wtedy pojawia się błąd:
Pole nagłówka żądania Access-Control-Allow-Origin nie jest dozwolone przez Access-Control-Allow-Headers
Więc przejrzałem to i jedynym podobnym pytaniem, jakie mogłem znaleźć, było udzielenie połowy odpowiedzi, a następnie zamknięte jako nie na temat. Jakie nagłówki mam dodać / usunąć?
Odpowiedzi:
Serwer (że żądanie POST jest wysyłany do) musi zawierać
Access-Control-Allow-Headers
nagłówek (ETC) w swojej odpowiedzi . Umieszczenie ich w żądaniu od klienta nie ma wpływu.Wynika to z faktu, że to serwer musi określić, czy akceptuje żądania pochodzące z różnych źródeł (i że zezwala na
Content-Type
nagłówek żądania itd.) - klient nie może sam zdecydować, czy dany serwer powinien zezwalać na CORS.źródło
Content-Type
?Miałem ten sam problem. W dokumentacji jQuery znalazłem:
Tak więc, chociaż serwer zezwala na żądanie pochodzenia, ale nie zezwala
Access-Control-Allow-Headers
, będzie generować błędy. Domyślnie typem zawartości kątowejapplication/json
jest próba wysłania żądania OPCJI. Spróbuj zastąpić domyślny nagłówek kątowy lub zezwolićAccess-Control-Allow-Headers
na serwerze. Oto próbka kątowa:źródło
or allow Access-Control-Allow-Headers in server end
w jaki sposób?header
do ustawienia nagłówka odpowiedziJeśli to pomaga komukolwiek (nawet jeśli jest to trochę kiepskie, ponieważ musimy na to zezwalać tylko w celach programistycznych), oto rozwiązanie Java, ponieważ napotkałem ten sam problem. [Edytuj] Nie używaj symboli wieloznacznych *, ponieważ jest to złe rozwiązanie, użyj,
localhost
jeśli naprawdę potrzebujesz czegoś działającego lokalnie.źródło
Serwer (do którego wysyłane jest żądanie POST) musi zawierać nagłówek Content-Type w swojej odpowiedzi.
Oto lista typowych nagłówków, w tym jeden niestandardowy nagłówek „X_ACCESS_TOKEN”:
Właśnie tego potrzebuje Twój serwer http dla serwera WWW, na który wysyłasz swoje żądania.
Możesz również poprosić swojego serwera o ujawnienie nagłówka „Content-Length”.
Rozpozna to jako żądanie CORS (Cross-Origin Resource Sharing) i powinien zrozumieć implikacje związane z konfiguracją tych serwerów.
Szczegółowe informacje:
źródło
Możesz aktywować odpowiedni nagłówek w PHP za pomocą tego:
źródło
Następujące działa dla mnie z nodejs:
źródło
Nagłówki, które próbujesz ustawić, są nagłówkami odpowiedzi . Muszą być dostarczone w odpowiedzi przez serwer, do którego kierujesz zapytanie.
Nie ma dla nich miejsca. Nie byłoby sensu dysponować środkami do przyznawania uprawnień, gdyby mogły być one udzielone przez witrynę, która chciała pozwolenia, zamiast witryny, która była właścicielem danych.
źródło
Jeśli ktoś napotka ten problem z serwerem ekspresowym, dodaj następujące oprogramowanie pośrednie
źródło
jeśli testujesz niektóre żądania javascript dla ionic2 lub angularjs 2, w swoim chrome na PC lub Mac, upewnij się, że zainstalowałeś wtyczkę CORS dla przeglądarki chrome, aby umożliwić krzyżowanie.
Żądania mayba get będą działać bez potrzeby, ale wysyłanie i wysyłanie i usuwanie będzie wymagało zainstalowania wtyczki cors do testowania, aby przejść bez problemów, co zdecydowanie nie jest fajne, ale nie wiem, jak ludzie to robią bez wtyczki CORS.
i upewnij się również, że odpowiedź json nie zwraca wartości 400 według statusu json
źródło
to jest problem zaplecza. jeśli używasz interfejsu API żagle na backend zmień cors.js i dodaj tutaj swoje pole
źródło
W Asp Net Core , aby szybko uruchomić go do programowania; w
Startup.cs
,Configure method
dodajźródło
W moim przypadku otrzymuję kilka parametrów jako @HeaderParam do metody usługi internetowej.
Te parametry MUSZĄ zostać zadeklarowane w filtrze CORS w ten sposób:
źródło
Request header field Access-Control-Allow-Origin is not allowed by Access-Control-Allow-Headers
błąd oznacza, żeAccess-Control-Allow-Origin
pole nagłówka HTTP nie jest obsługiwane lub dozwolone przez odpowiedź. UsuńAccess-Control-Allow-Origin
pole z nagłówka żądania.źródło
Jeśli używasz
localhost
i PHP ustawia to w celu rozwiązania problemu:Z własnego interfejsu:
i boom już nie ma problemów
localhost
!źródło