我正在尝试通过 POST 请求发送一些数据,但收到“缺少 CSRF 令牌”错误。我正在尝试使用 requests.post
标头发送(反)CSRF 令牌,如下所示:
response = requests.post("my_url", data={"id_user": current_user_id.decode("utf-8")}, headers='Authorization: X-CSRF-TOKEN ' + session['csrf_token'])
但是,在运行时,Python 会抛出以下错误:
AttributeError: 'str' object has no attribute 'items'
我不确定我哪里出错了,有人可以帮我评估错误发生的原因吗?
答案 0 :(得分:1)
HEREError Traceback (most recent call last)
<ipython-input-72-e0860df7cdc5> in <module>
----> 1 response = evAPI.get_stations_circular_search(latitude = 37.87166, longitude =-122.2727, radius = 10000)
2 response
/Applications/anaconda3/lib/python3.7/site-packages/herepy/ev_charging_stations_api.py in get_stations_circular_search(self, latitude, longitude, radius, connectortypes)
100 }
101 response = self.__get(
--> 102 self._base_url + "stations.json", data, EVChargingStationsResponse
103 )
104 return response
/Applications/anaconda3/lib/python3.7/site-packages/herepy/ev_charging_stations_api.py in __get(self, base_url, data, response_cls)
41 return response_cls.new_from_jsondict(json_data)
42 else:
---> 43 raise error_from_ev_charging_service_error(json_data)
44
45 def __connector_types_str(self, connector_types: List[EVStationConnectorTypes]):
HEREError: Error occured on __get
模块将 requests
参数作为 Python 字典。而不是像这样使用字符串:
headers
你需要使用这样的字典:
headers='Authorization: X-CSRF-TOKEN '+session['csrf_token']
如果你把代码放在一起,它看起来像这样:
headers={'Authorization': 'X-CSRF-TOKEN ' + session['csrf_token']}