相关疑难解决方法(0)

使Axios自动在其请求中发送cookie

我正在使用Axios从客户端向Express.js服务器发送请求.

我在客户端设置了一个cookie,我想从所有Axios请求中读取该cookie,而不是手动添加它们来手动请求.

这是我的客户端请求示例:

axios.get(`some api url`).then(response => ...
Run Code Online (Sandbox Code Playgroud)

我试图通过在Express.js服务器中使用这些属性来访问标头或cookie:

req.headers
req.cookies
Run Code Online (Sandbox Code Playgroud)

它们都不包含任何cookie.我正在使用cookie解析器中间件:

app.use(cookieParser())
Run Code Online (Sandbox Code Playgroud)

如何让Axios自动在请求中发送cookie?

编辑:

我在客户端设置cookie如下:

import cookieClient from 'react-cookie'

...
let cookie = cookieClient.load('cookie-name')
if(cookie === undefined){
      axios.get('path/to/my/cookie/api').then(response => {
        if(response.status == 200){
          cookieClient.save('cookie-name', response.data, {path:'/'})
        }
      })
    }
...
Run Code Online (Sandbox Code Playgroud)

虽然它也使用Axios,但它与问题无关.一旦设置了cookie,我只想在我的所有请求中嵌入cookie.

javascript cookies node.js express axios

86
推荐指数
11
解决办法
10万
查看次数

同一域上的CORS错误?

我现在正遇到一个奇怪的CORS问题.

这是错误消息:

XMLHttpRequest cannot load http://localhost:8666/routeREST/select?q=[...] 
Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin
Run Code Online (Sandbox Code Playgroud)

两台服务器:

  • localhost:8666/routeREST /:这是一个简单的Python Bottle服务器.
  • localhost:8080 /:Python simpleHTTPserver我在哪里运行Javascript应用程序.这个应用程序正在上面的服务器上执行Ajax请求.

有什么想法可能是什么问题?

编辑:

而且...端口是问题所在.谢谢你的回答:)

如果有人也使用Python瓶服务器,你可以按照这篇文章给出的答案来解决CORS问题: Bottle Py:为jQuery AJAX请求启用CORS

javascript python ajax cross-domain cors

67
推荐指数
2
解决办法
6万
查看次数

如何使用带有httpOnly cookie或basic auth的window.fetch()

我在Firefox和Chrome中使用window.fetch().出于某些原因,fetch()不会发送任何cookie.现在这不会成为问题,因为我可以使用它们发送它们

fetch('/something', { headers: { Cookie: document.cookie } })
Run Code Online (Sandbox Code Playgroud)

但这不适用于httpOnly cookie.

javascript cookies dom basic-authentication fetch-api

20
推荐指数
1
解决办法
5504
查看次数

获取请求没有发送我的cookie,有什么问题吗?

我的请求有问题fetch。由于某些原因,当我向服务器发出请求时,它不会发送我的 cookie。例如,我正在使用这样的获取请求

fetch('/api/islogged', {
      method: 'GET',
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
        'Cache': 'no-cache'
      },
      credentials: 'include',
    })
Run Code Online (Sandbox Code Playgroud)

即使我已经登录,它仍然说我没有登录。www.localhost.com/api/islogged但是,如果我直接在浏览器中访问,它会返回正确的答案

javascript cookies

5
推荐指数
1
解决办法
3270
查看次数

使用fetch post请求进行正确的Django CSRF验证

我正在尝试使用JavaScript的fetch库来向我的Django应用程序提交表单.但无论我做什么,它仍然抱怨CSRF验证.

关于Ajax的文档提到了指定我尝试过的头文件.

我还尝试从templatetag中获取令牌并将其添加到表单数据中.

这两种方法似乎都不起作用.

以下是包含表单值和标题的基本代码:

let data = new FormData();
data.append('file', file);;
data.append('fileName', file.name);
// add form input from hidden input elsewhere on the page
data.append('csrfmiddlewaretoken', $('#csrf-helper input[name="csrfmiddlewaretoken"]').attr('value'));
let headers = new Headers();
// add header from cookie
const csrftoken = Cookies.get('csrftoken');
headers.append('X-CSRFToken', csrftoken);
fetch("/upload/", {
    method: 'POST',
    body: data,
    headers: headers,
})
Run Code Online (Sandbox Code Playgroud)

我能够使用JQuery,但想尝试使用fetch.

javascript django django-csrf fetch-api

3
推荐指数
3
解决办法
3008
查看次数

Django Rest Framework 不会接受我的 CSRF 令牌

我正在尝试使用 Django Rest Framework 构建单页应用程序。对于身份验证,我使用登录视图来启动会话并要求对所有 api 路由进行 csrf 保护。由于没有进行模板化,因此csrf_token从未使用该标记,因此我必须使用 手动获取令牌get_token。我不想将其放在主视图中给出的主索引文件中,而是想将其设置在自己的 cookie 上。不,这不是 django 提供的 CSRF Coo​​kie,因为它具有 CSRF 秘密,而且我提到我正在使用会话,因此秘密存储在那里。该 cookie 将具有将用于所有变异请求的令牌。

我已经尝试了一切让 django 接受 cookie 但没有任何效果。我第一次可以正常登录,因为没有之前的会话,但此后的任何操作都会抛出错误 403。我尝试使用,ensure_csrf_cookie但没有帮助。我尝试不进行会话,但仍然一无所获。我什至尝试重新排列中间件顺序,但仍然一无所获。我什至尝试了自己的自定义中间件来创建 cookie,但它不起作用。这是我现在得到的代码:

视图.py

@api_view(http_method_names = ["GET"])
def home(request):
    """API route for retrieving the main page of web application"""
    return Response(None, status = status.HTTP_204_NO_CONTENT);

class LoginView(APIView):
    """API endpoint that allows users to login"""
    def post(self, request, format = None):
        """API login handler"""
        user = authenticate(username = request.data["username"], password = request.data['password']); …
Run Code Online (Sandbox Code Playgroud)

python django cookies csrf django-rest-framework

2
推荐指数
1
解决办法
4056
查看次数

Javascript React 可以将 HttpOnly cookie 发送到服务器吗?

您可以使用 fetch 或通过其他方式将带有 HttpOnly cookie 的请求发送到 React 中的服务器吗?

我知道 HttpOnly 意味着您无法使用 JS 访问它。我在想,也许你看不懂,但你可以寄回去吗?我不知道。

我要这个:

  • 从客户端(ReactJS SPA)向服务器发出请求
  • 服务器响应并设置 HttpOnly Cookie。
  • 客户端得到响应,cookie 由浏览器自动设置。

对于同一台服务器的新请求,我想发回那个 cookie。这可以使用 ReactJS 吗?或者也许有一些方法可以绕过它,比如用简单的 HTML 而不是 ReactDOM 打开新窗口?

谢谢你的帮助。

cookies httponly reactjs

2
推荐指数
1
解决办法
2401
查看次数