Greasemonkey POST-запрос всегда возвращает ошибку 400 - PullRequest
0 голосов
/ 15 марта 2011

У меня есть приложение django, которое предоставляет API, URL-адрес которого выглядит следующим образом:

url('^links/', linkhandler),

Обработчик ссылок - это ресурс поршня django, чья POST (функция Create), которую я дал ниже,

 def create(self, request):

    try:

        link_obj  = Link.objects.get(link = request.POST['link'])
    print link_obj
        link_obj.rec_count = link_obj.rec_count+ request.POST.get('rec_count', 1)
        link_obj.save()
        return link_obj
    except:
        try:

            query_obj  = Query.objects.get(query_word = request.POST['query'])
    print query_obj
        except:
            query_obj  = Query(query_word = request.POST['query'])

            query_obj.save()

        link_obj = Link(link = request.POST['link'], rec_count = request.POST.get('rec_count', 1), query = query_obj)
        link_obj.save()

        return link_obj

Все вышеперечисленное прекрасно, и когда я делаю POST-запрос через CURL, он работает отлично. Например, ниже приведен мой запрос CURL, который работает,

curl -d "query=hp&link=http://www.shopping.hp.com/&rec_count=1" http://localhost:8000/api/links/

Но когда я пытаюсь сделать это из скрипта greasemonkey, он всегда возвращает ошибку 400: (

Ниже приведен связанный скрипт greasemonkey

    GM_xmlhttpRequest({
                method:"POST",
                url:"http://localhost:8000/api/links/",
                headers:{
                    "User-Agent":"Mozilla/5.0",
                    "Accept":"text/json",
                    "Content-Type" : "application/x-www-form-urlencoded" 
                },
                data: encodeURI("query="+GM_getValue('q', '')+"&link="+this.previousSibling.href+"&rec_count=1"), 
                onerror: function errorhand()
{
alert("error occurred!");
}
            }); 

В чем может быть проблема?

1 Ответ

2 голосов
/ 15 марта 2011

Извините за шум, похоже, это проблема с django-поршнем

Вот подробности. https://bitbucket.org/jespern/django-piston/issue/87/split-charset-encoding-form-content-type

...