jQuery ajax GET restituisce il metodo 405 non consentito

Sto cercando di accedere a un’API che richiede l’autenticazione. Questo è il codice che sto usando, ma continuo a ricevere un errore 405 Method Not Allowed. qualche idea? (il mio nome utente e password sono corretti)

function basic_auth(user, pass){ var tok = user + ':' + pass; var hash = $.base64.encode(tok); return "Basic " + hash; } var auth = basic_auth('username','password'); var releaseName1 = "11.6.3"; var releaseName2 = "11.6.3 Confirmed"; $.ajax({ type: "GET", url: "https://www10.v1host.com/Company/rest-1.v1/Data/Story?sel=Description,Number,Name,Timebox.Name,Parent,AssetState&where=Custom_Release2.Name='"+releaseName1+"','"+releaseName2+"';AssetState='64'", beforeSend: function(xhr){ xhr.setRequestHeader('Authorization', auth); }, dataType: "xml", async: false, success: parseXml }); function parseXml(xml){ $(xml).find("item"); } 

Non è ansible effettuare chiamate javascript / Ajax tra domini (senza alcun serio aggiramento). Quello che abbiamo fatto per questo in passato è creare un proxy jsp locale che chiamiamo con il nostro javascript, ma è solo un pass-through per l’URL remoto.

Ecco un esempio di codice JSP che è vicino a quello che ho usato per colpire un’istanza SOLR che restituisce JSON.

 final String ENCODING = "UTF-8"; // this is the default unless specified otherwise (in server.xml for Tomcat) // see http://tomcat.apache.org/tomcat-6.0-doc/config/http.html#Common_Attributes and // http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q2 final String URI_ENCODING = "ISO-8859-1"; HashMap defaultSettings = new HashMap() { { put("wt", "json"); put("rows", "10"); put("start", "0"); } }; BufferedReader searchResponse = null; OutputStreamWriter forwardedSearchRequest = null; // TODO: are there any headers that we need to pass on? // simply pass on the request to the search server and return any results try { URL searchURL = new URL("http://yourdestinationurlhere.com"); HttpURLConnection conn = (HttpURLConnection) searchURL.openConnection(); // read the request data and send it as POST data (unchanged) conn.setDoOutput(true); forwardedSearchRequest = new OutputStreamWriter(conn.getOutputStream()); // at least for Tomcat 6.0, the default is really iso-8859-1, although it is reported as UTF-8 // so, we will explicitly set it to URI_ENCODING in both places request.setCharacterEncoding(URI_ENCODING); String query = (String) request.getParameter("q"); if ((query != null) && (! "".equals(query.trim()))) { query = URLEncoder.encode(query, request.getCharacterEncoding()); // we must use the same setting as the container for URI-encoding forwardedSearchRequest.write("&q="); forwardedSearchRequest.write(query); } else { // empty queries may return all results, so let's circumvent that forwardedSearchRequest.write("&q=help"); } for(String key:defaultSettings.keySet()) { String resultType = (String) request.getParameter(key); if ((resultType == null) || "".equals(resultType.trim())) resultType = defaultSettings.get(key); forwardedSearchRequest.write("&"+key+"="); forwardedSearchRequest.write(resultType); } forwardedSearchRequest.flush(); // read and forward the response // reset anything that may have been sent so far out.clearBuffer(); // do this only if we have a 200 response code if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) { // the web server may be running as windows-1252, so let's ensure we have the right CS searchResponse = new BufferedReader(new InputStreamReader(conn.getInputStream(), ENCODING)); String contentType = conn.getHeaderField("Content-Type"); if ((contentType != null) && (! "".equals(contentType))) response.setHeader("Content-Type", contentType); String buffer; while ((buffer = searchResponse.readLine()) != null) out.println(buffer); } else { // dish out a mock-Solr-JSON response that includes a status and an error response.setHeader("Content-Type", "application/json"); out.println("{ responseHeader: {status: -1, responseCode: " + conn.getResponseCode() + ", responseMessage: \"" + conn.getResponseMessage() + "\" } }"); } } catch (Exception e) { throw new ServletException("Exception - " + e.getClass().getName(), e); } finally { if (forwardedSearchRequest != null) forwardedSearchRequest.close(); if (searchResponse != null) searchResponse.close(); } 

prova a cambiare il tuo tipo di dati in “jsonp” stai provando a inviare una richiesta di dominio incrociato