javascript django backbone.js tastypie

javascript - Error ''Solicitud de permiso de campo de cabecera no permitido''-Tastypie



django backbone.js (5)

Aunque elevé la respuesta de @Manuel Bitto,
Me gustaría publicar otra respuesta que contenga un filtro completo de Cors que funcione para mí con Apache tomcat 5.x:

public class CorsFilter implements Filter { public CorsFilter() { } public void init(FilterConfig fConfig) throws ServletException { } public void destroy() { } public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletResponse httpServletResponse = (HttpServletResponse)response; httpServletResponse.addHeader("Access-Control-Allow-Origin", "*"); httpServletResponse.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, OPTIONS, DELETE"); httpServletResponse.addHeader("Access-Control-Allow-Headers", "Authorization"); chain.doFilter(request, response); } }

Sugeriría específicamente prestar atención a la adición de OPTIONS a los valores de encabezado "Access-Control-Allow-Methods".
La razón para hacer eso es que de acuerdo con la explicación proporcionada por Mozilla,
si su solicitud (digamos POST) contiene un encabezado especial, o un tipo de contenido (y este es mi caso), entonces el objeto XMLHttpRequest generará una llamada OPTIONS adicional, que debe abordar en su código.
Espero que esto ayude.

Recibo el siguiente error al utilizar ApiKeyAuthentication para mis recursos Tastypie cuando intento hacer una solicitud HTTP usando AJAX y Tastypie:

XMLHttpRequest cannot load http://domain.com/api/v1/item/?format=json&username=popo&api_key=b83d21e2f8bd4952a53d0ce12a2314c0ffa031b1. Request header field Authorization is not allowed by Access-Control-Allow-Headers.

¿Alguna idea sobre cómo resolver esto?

Aquí están los encabezados de solicitud de Chrome:

Request Headersview source Accept:*/* Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 Accept-Encoding:gzip,deflate,sdch Accept-Language:en-US,en;q=0.8 Access-Control-Request-Headers: origin, authorization, access-control-allow-origin, accept, access-control-allow-headers Access-Control-Request-Method: GET

Aquí están los encabezados de respuesta de Chrome:

Response Headersview source Access-Control-Allow-Headers: Origin,Content-Type,Accept,Authorization Access-Control-Allow-Methods: POST,GET,OPTIONS,PUT,DELETE Access-Control-Allow-Origin:* Connection:keep-alive Content-Length:0 Content-Type: text/html; charset=utf-8 Date:Fri, 11 May 2012 21:38:35 GMT Server:nginx

Como puede ver, ambos tienen encabezados para Autorización, pero la autorización no funciona.

Aquí está el middleware django que estoy usando para editar los encabezados de respuesta: https://gist.github.com/1164697

Editar: descubrí el problema. Intentaba conectarme a www.domain.com, y solo acepta domain.com


El problema era que www.domain.com se veía como diferente de domain.com. domain.com funcionó, pero cuando utilicé www.domain.com, me detectó como que hacía solicitudes desde un dominio diferente


Esto sucede debido a la misma política de origen .

Debe realizar una llamada AJAX desde el mismo dominio donde se envía la solicitud. O realice cambios en el servidor, permitiendo solicitudes desde dominios externos.

Para resolver esto, debe realizar cambios en los encabezados en http://dominio.com permitiendo que su dominio externo en los encabezados:

Access-Control-Allow-Origin: *

Leer more


La respuesta de Antyrat no está completa.

Debes especificar qué encabezados permite tu servidor; en su caso, autorización .

Access-Control-Allow-Origin: * Access-Control-Allow-Methods: GET, POST, PUT, DELETE Access-Control-Allow-Headers: Authorization


Sé que esta pregunta es más antigua.

Pero hoy encontré el mismo problema de cors luego de agregar owin. Después del número de búsqueda en google y probando varias soluciones. Solucioné el problema de cors añadiendo a continuación

<remove name="ExtensionlessUrlHandler-Integrated-4.0" /> <remove name="OPTIONSVerbHandler" /> <remove name="TRACEVerbHandler" />

Para obtener más información, siga los enlaces a continuación. Gracias.

[ http://benfoster.io/blog/aspnet-webapi-cors]