web-dev-qa-db-fra.com

À quoi sert le cookie has_js?

Je crée une application Android qui parle au module Services à l'aide de REST endpoint. Lorsque je publie du contenu sans définir le cookie "has_js = 1" dans le = REST endpoint au format JSON, mon contenu n'est jamais accepté par Drupal ou module de service).

Quelle est l'utilisation du cookie has_js et pourquoi dois-je envoyer avec mes demandes POST?

Mise à jour:

Voici mon code pour publier le type de contenu de l'article. Si je n'ajoute pas le cookie has_js = 1, l'article ne sera pas publié sur le site Drupal.

 protected Integer doInBackground(String... params) {

        //read session_name and session_id from passed parameters
        String session_name=params[0];
        String session_id=params[1];


        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://ec2-54-***-**-***.us-west-2.compute.amazonaws.com/cmac/rest/node");



        try {

            //get title and body UI elements
            TextView txtTitle = (TextView) findViewById(R.id.editTitle);
            TextView txtBody = (TextView) findViewById(R.id.editBody);

            //extract text from UI elements and remove extra spaces
            String title=txtTitle.getText().toString().trim();
            String body=txtBody.getText().toString().trim();

            //create JSON object to pass to Services endpoint
            JSONObject json= new JSONObject(" { \"title\":\""+title+"\",\"type\":\"article\",\"body\":{\"und\":[{ \"value\":\""+body+"\"}]}}");

            StringEntity se = new StringEntity( json.toString());
            se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
            httppost.setEntity(se);


            BasicHttpContext mHttpContext = new BasicHttpContext();
            CookieStore mCookieStore      = new BasicCookieStore();

            //create the session cookie
            BasicClientCookie cookie = new BasicClientCookie(session_name, session_id);
            cookie.setVersion(0);
            cookie.setDomain(".ec2-54-***-**-***.us-west-2.compute.amazonaws.com");
            cookie.setPath("/");
            mCookieStore.addCookie(cookie);
            cookie = new BasicClientCookie("has_js", "1");
            mCookieStore.addCookie(cookie);
            mHttpContext.setAttribute(ClientContext.COOKIE_STORE, mCookieStore);

            httpclient.execute(httppost,mHttpContext);

            return 0;

        }catch (Exception e) {
            Log.v("Error adding article",e.getMessage());
        }

        return 0;
    }
4
Ajinkya Kulkarni

Le cookie has_js a été utilisé par Batch API . Sans ce cookie, ou lorsque JS est désactivé dans le navigateur client, l'API batch vous donnera un WSOD.

Voir $ _ COOKIE ['has_js'] doit mourir .

Si votre point de terminaison de service traite en interne l'API Batch, vous aurez ce problème.

2
Mathankumar