小编may*_*k93的帖子

在react应用程序中使用API​​密钥

我有一个使用两个第三方服务的React应用程序.该应用程序已开始使用react-create-app.

这两项服务都需要API密钥.

一个密钥通过脚本标记提供,如下所示:

<script type="text/javascript" src="https://myapi?key=MY_KEY">
</script>
Run Code Online (Sandbox Code Playgroud)

另一个API密钥用于请求中.我将实际的密钥存储在一个常量中,并使用它来形成请求.像这样:

const MY_OTHER_KEY = 'MY_OTHER_KEY'
let url = `http://myotherapi?key=${MY_OTHER_KEY}&q=${query}`
Run Code Online (Sandbox Code Playgroud)

谷歌处理API密钥的最佳做法提示:

不要直接在代码中嵌入API密钥

这让我想到了第一个问题:

1.如何使用变量index.html

在我的index.html文件中,我有两个看起来像这样的标签:

<link rel="manifest" href="%PUBLIC_URL%/manifest.json">
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico">
Run Code Online (Sandbox Code Playgroud)

显然,%PUBLIC_URL%是一个变量.如何添加变量%MY_KEY%以避免直接在我的代码中嵌入API密钥?

得到这样的东西:

<script type="text/javascript" src="https://myapi?key=%MY_KEY%">
</script>
Run Code Online (Sandbox Code Playgroud)

与此问题相关,将API密钥存储在常量中是否安全,就像我一样MY_OTHER_KEY

谷歌还说:

不要将API密钥存储在应用程序源代码树中的文件中

这让我想到了第二个问题:

2. API密钥是否仍然在捆绑中?

说我做谷歌和我说的话

...将它们存储在环境变量或应用程序源树之外的文件中

假设我将密钥存储在外部文件中.我认为,该文件将在某个时刻被读取,并且它的内容要么在包中复制,要么以其他方式引用.最后,密钥是否仍然可以在捆绑中看到,除非可能更难找到?这对此有何帮助?

3.在react应用程序中是否有使用API​​密钥的canonic方法?或者由个人开发人员决定?

自我解释,我正在寻找解决这个问题的反应方式,如果有的话.

谢谢您的帮助!

security frontend api-key reactjs

26
推荐指数
1
解决办法
1万
查看次数

python 3.5 asyncio和aiohttp Errno 101网络无法访问

我在Ubuntu 16上使用python 3.5.

我正在尝试使用aiohttp来编写一个简单的客户端.

这是我的代码.我从这里拿走了它.这是第一个代码示例,禁用了ssl检查:

import aiohttp
import asyncio
import async_timeout

async def fetch(session, url):
    with async_timeout.timeout(10):
        async with session.get(url) as response:
            return await response.text()

async def main(loop):
    conn = aiohttp.TCPConnector(verify_ssl=False)
    async with aiohttp.ClientSession(loop=loop, connector=conn) as session:
        html = await fetch(session, 'http://www.google.com')
        print(html)

loop = asyncio.get_event_loop()
loop.run_until_complete(main(loop))

loop = asyncio.get_event_loop()
loop.run_until_complete(main(loop))
Run Code Online (Sandbox Code Playgroud)

对于某些网站,此代码有效.对于其他人,包括http://python.orghttp://google.com不起作用.相反,代码会生成此错误:

aiohttp.errors.ClientOSError: [Errno 101] Cannot connect to host google.com:80 ssl:False [Can not connect to google.com:80 [Network is unreachable]]
Run Code Online (Sandbox Code Playgroud)

我尝试了一个简单的requests脚本,如下所示:

import requests …
Run Code Online (Sandbox Code Playgroud)

python python-3.x python-asyncio aiohttp

10
推荐指数
1
解决办法
1181
查看次数

Django Rest Framework - 如何路由到函数视图

我正在使用DjangoDjango Rest Framework.

Django==2.0.2
djangorestframework==3.7.7
Run Code Online (Sandbox Code Playgroud)

我正在尝试路由到function view.

我当前的设置如下所示:

- project
    - project
        - urls
    - app
        - urls
        - views
Run Code Online (Sandbox Code Playgroud)

在 中project/urls,我引用app's这样的网址:

url(r'^app_api/', include('app_api.urls', namespace='app_api'))

在 中app/urls,我路由到这样的视图:

router.register(r'', views.app_api, base_name="app_api")
url(r'', include(router.urls)),
Run Code Online (Sandbox Code Playgroud)

app/views我定义了一个名为 的函数app_api并用 装饰它api_view

@api_view(['GET'])
def app_api(request):
Run Code Online (Sandbox Code Playgroud)

例如,如果我运行服务器curl http://localhost:8080/app_api/,我会收到状态 200 和空 JSON 的响应。

"GET /app_api/ HTTP/1.1" 200 2 {}

我不明白为什么会发生这种情况。如果我使用基于类的视图集,它可以工作,但不能与函数视图一起使用。

使用时路由到函数视图的正确方法是什么Django Rest Framework

谢谢!

python django django-views django-rest-framework

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

del self vs self .__ del __() - 什么是在python中清理的正确方法?

我有一个包含类的python脚本.

这个类有一个__del__常规清理方法.如果我在正常执行脚本期间删除了类,我想要完成一些清理工作.

我也有一个信号处理程序,它做了一些不寻常的清理工作.如果脚本在收到信号时正在执行其他操作,则需要进行一些额外的清理,然后进行常规清理.

我注意到做del self和之间有区别self.__del__().

即,self.__del__()调用该del方法两次.

你能解释一下为什么会这样吗?

这是一个模拟脚本来说明问题:

import sys
import signal
from optparse import OptionParser


class TestClass(object):
    def __init__(self,
                 del_self):
        self.del_self = del_self

        print "__init__ with del_self = %s" % self.del_self

    def __del__(self):
        print "Now performing usual cleanup."

    def signal_handler(self, arg_1, arg_2):
        print "Received signal. Now performing unusual cleanup."

        # Unusual cleanup

        print "Did unusual cleanup"

        if self.del_self:
            print("Doing del self")
            del self
        else:
            print("Doing self.__del__()")
            self.__del__()

        sys.exit(0)


if …
Run Code Online (Sandbox Code Playgroud)

python self code-cleanup python-2.7 python-3.x

4
推荐指数
1
解决办法
4710
查看次数

禁用SSL证书检查Twisted Agents

我使用Twisted(16.3)和Treq(15.1)在Python(2.7)中发出异步请求.

我遇到了一些基于HTTPS的请求问题.

有些网站的证书无效,因此在向他们提出请求时,我得到了这个:

twisted.python.failure.Failure OpenSSL.SSL.Error
Run Code Online (Sandbox Code Playgroud)

我希望我的客户端信任任何服务器,包括那些没有证书或自签名证书的服务器.

如何在我的客户端上禁用证书检查?

这是一个与我的问题基本相同的问题:https://stackoverflow.com/questions/34357439/ssl-options-for-twisted-agents

谢谢!

python ssl twisted twisted.web twisted.internet

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