Javascript:如何通过HTTPS和AJAX调用API
Javascript: How to call an API over HTTPS and AJAX?
以前我的网站是http协议,所以在我的javascript中这样做是有效的:
$.ajax({
url: 'http://x.x.x:5000/sthng',
type: 'GET',
headers: {
"Authorization": "Basic " + btoa(uname + ":" + pass)
},
success: function(result) {
console.log(result)
}
});
但由于http不安全,我转向了HTTPS。当我尝试访问HTTPS网站时,我应该如何进行ajax调用?
顺便说一句,我正在使用Flask API前面的Tornado网络服务器。我的龙卷风服务器代码是这样的:
from tornado.wsgi import WSGIContainer
from tornado.ioloop import IOLoop
from tornado.web import FallbackHandler, RequestHandler, Application
from flask-file import app
import tornado.httpserver
class MainHandler(RequestHandler):
def get(self):
self.write("This message comes from Tornado ^_^")
class getToken(tornado.web.RequestHandler):
def get(self):
self.write("hello")
tr = WSGIContainer(app)
application = Application([
(r'/', getToken),
(r"/tornado", MainHandler),
(r".*", FallbackHandler, dict(fallback=tr)),
])
if __name__ == "__main__":
http_server = tornado.httpserver.HTTPServer(application, ssl_options={
"certfile": "C:/x/key.pem",
"keyfile": "C:/x/server.key",
})
http_server.listen(5000)
tornado.ioloop.IOLoop.instance().start()
这是我每次Javascript(在AJAX中使用url:"https://x.x.x:5000/sthng")调用API时在Tornado中遇到的错误:
ERROR:tornado.application:Exception in callback (<socket.socket fd=344, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('0.0.0.0', 5000)>, <function wrap.<locals>.null_wrapper at 0x000000000499FD90>) Traceback (most recent call last):
File "C:'Python34'lib'site-packages'tornado'ioloop.py", line 883, in
start handler_func(fd_obj, events)
File "C:'Python34'lib'site-packages'tornado'stack_context.py", line 275, in
null_wrapper return fn(*args, **kwargs)
File "C:'Python34'lib'site-packages'tornado'netutil.py", line 274, in
accept_handler callback(connection, address)
File "C:'Python34'lib'site-packages'tornado'tcpserver.py", line 239, in
_handle_connection do_handshake_on_connect=False)
File "C:'Python34'lib'site-packages'tornado'netutil.py", line 510, in
ssl_wrap_socket context = ssl_options_to_context(ssl_options)
File "C:'Python34'lib'site-packages'tornado'netutil.py", line 487, in
ssl_options_to_context context.load_cert_chain(ssl_options['certfile'],
ssl_options.get('keyfile', None)) ssl.SSLError: [SSL] PEM lib (_ssl.c:2515)
另外:做卷曲给了我这个:curl: (35) 与 x.x.x:5000 相关的未知 SSL 协议错误
真的迷路了!请帮忙。谢谢。
尝试将数据类型设置为"jsonp",这对我的跨源请求很有帮助。
$.ajax({
url: "https://x.x.x:5000/sthng/"
dataType: "jsonp",
success: function(data) {
console.log(data)
}
});
不需要类型:获取为 AJAX 调用默认为"获取"
相关文章:
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- Javascript/jQuery中的并行Ajax调用
- 任何方式使AJAX调用Gmail API,而无需通过JS库
- node.js请求数据事件未在CORS ajax调用中触发
- 如何从ajax调用返回.wrap()元素
- Ajax调用在Firefox中不会自动响应
- AJAX调用中的非法调用
- 使用AJAX调用将GeoJSON数据拉入传单
- 在MVC 4中,对Controller的Ajax调用为空
- Jquery:对返回JSON数据的php脚本的Ajax调用
- 在ajax调用中阻止来自JS对象的函数
- 如何在MVC5中ajax调用的部分视图中引用外部javascript
- 页面加载后的Ajax调用
- 如何使用Ajax调用特定的控制器和操作来重定向用户
- curl和fileget_contents在ajax调用后不起作用
- 在任何AJAX调用之前触发一个javascript函数
- 无法在mvc视图中使用ajax调用获取操作返回的模型对象列表
- Ajax调用ERror Cross Origin REquest:在rails中自动完成大学列表
- ASP.NET MVC 3-在ajax调用后,重定向到新页面或生成页面刷新
- 点击功能没有'ajax调用动态元素(Backbone)后无法工作