371

Send cookies with curlが機能することを読みましたが、私にとってはそうではありません。

次のようなRESTエンドポイントがあります。

class LoginResource(restful.Resource):
    def get(self):
        print(session)
        if 'USER_TOKEN' in session:
            return 'OK'
        return 'not authorized', 401

次のようにアクセスしようとすると:

curl -v -b ~/Downloads/cookies.txt -c ~/Downloads/cookies.txt http://127.0.0.1:5000/
* About to connect() to 127.0.0.1 port 5000 (#0)
*   Trying 127.0.0.1...
* connected
* Connected to 127.0.0.1 (127.0.0.1) port 5000 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.27.0
> Host: 127.0.0.1:5000
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 401 UNAUTHORIZED
< Content-Type: application/json
< Content-Length: 16
< Server: Werkzeug/0.8.3 Python/2.7.2
< Date: Sun, 14 Apr 2013 04:45:45 GMT
<
* Closing connection #0
"not authorized"%

私の居場所~/Downloads/cookies.txt

cat ~/Downloads/cookies.txt
USER_TOKEN=in

そしてサーバーは何も受け取りません:

127.0.0.1 - - [13/Apr/2013 21:43:52] "GET / HTTP/1.1" 401 -
127.0.0.1 - - [13/Apr/2013 21:45:30] "GET / HTTP/1.1" 401 -
<SecureCookieSession {}>
<SecureCookieSession {}>
127.0.0.1 - - [13/Apr/2013 21:45:45] "GET / HTTP/1.1" 401 -

私が見逃しているのは何ですか?

4

7 に答える 7

48

Cookie ファイルで間違った形式を使用しています。curl のドキュメントに記載されているように、Web ブラウザーで使用される形式とは異なる、古い Netscape cookie ファイル形式を使用します。curl Cookie ファイルを手動で作成する必要がある場合は、この投稿が役に立ちます。あなたの例では、ファイルには次の行が含まれている必要があります

127.0.0.1   FALSE   /   FALSE   0   USER_TOKEN  in

domaintailmatchpathsecureexpiresnamevalueを意味する 7 つのタブ区切りフィールドがあります。

于 2014-12-16T16:25:10.680 に答える
0

WindowsでGitBashを使用していますが、何もうまくいきませんでした。

だから私は自分のクッキーをという名前のファイルに保存し、.sessioncat を使用してそれから次のように読み取ることにしました:

curl -b $(cat .session) http://httpbin.org/cookies

興味があれば、私のクッキーは次のようになります。

session=abc123
于 2021-12-02T21:11:59.723 に答える