Tag: cors

关于配置和启动API服务器的实用指南-完美

有很多方法可以配置和启动Perfect Server。 本指南介绍了用会话 , 路由 , 过滤器和日志记录配置Perfect服务器的最佳实践。 届会 如果我们计划在服务器端Swift上进行会话,则需要在启动服务器之前对其进行配置。 这是我的示例配置,可以根据您的需求进行自定义: 另外,我们需要调用let sessionDriver = SessionMySQLDriver()来配置会话过滤器,并使用purgeInterval来清除停滞的会话。 CORS 为了使您的API与单页面应用程序(react,vue.js或Angular)一起使用,我们需要配置跨域引用共享(CORS) 。 您可以在此处阅读有关CORS的信息: 跨域资源共享(CORS) 跨域资源共享(CORS)是一种使用其他HTTP标头让用户代理获得…的机制。 developer.mozilla.org 以下是CORS配置的工作示例。 启动服务器之前,我们可以在主目录中调用CORS.configure() 。 确保定义了所有自定义的HTTP标头和可接受的主机名,否则将不接受Web客户端使用您的api! 👈 CSRF 跨站点请求伪造(CSRF)是一种攻击,它迫使最终用户在当前已通过身份验证的Web应用程序上执行不需要的操作。 CSRF攻击专门针对状态更改请求而不是数据盗窃,因为攻击者无法看到对伪造请求的响应。 您可以在此处阅读有关CSRF的信息: 跨站请求伪造(CSRF)– OWASP 跨站请求伪造(CSRF)是一种攻击,迫使最终用户在Web应用程序上执行不需要的操作… www.owasp.org 为了避免CSRF攻击,我们需要配置服务器。 以下是可以根据需要自定义的示例。 我们可以在启动服务器之前在主目录中调用CSRF.configure() 。 模式初始化 由于我们需要会话和数据库连接,因此需要在启动服务器之前对其进行配置。 我们可以将数据库,SMTP,会话等的所有配置都放在JSON并使用它来配置我们的服务器。 我们可以有针对不同环境的配置。 以下示例显示了如何为macOS和Linux不同地配置服务器: 典型的配置文件如下所示: 然后,我们可以像下面这样设置DB , session和SMPT配置: let opts = initSchema(fname) 这还会返回启动服务器时将使用的baseURL , httPort …。 […]

cordova和CORS(iOS)

我最近得到了一个相对较旧的iOS版本的cordova app(iphones),它是在一年前build成的,为了debugging它。 该应用程序从服务器查询API。 这个服务器使用Laravel构build,并使用laravel-cors 。 为了一个特殊的原因,这个应用程序的开发者已经build立了CORS服务器端来接受请求,只要Origin头部缺失。 有人告诉我,这个应用在过去的一年里工作得很好。 在debugging的时候,我注意到iOS浏览器在头文件中添加了origin =>'file://',当cordova应用程序使用$ .ajax做请求时 现在我的问题 你知道更新的iOS版本有这样的变化吗? 我想我不能做任何事情为了绕过它的客户端? 添加“file://”作为可接受的来源,服务器端是否安全? 万分感谢!

MobileSafari不会发回由CORS设置的Cookie

我在MobileSafari中加载了一个页面,通过CORS与另一台服务器进行通信。 在桌面浏览器(经过testing的Chrome和Safari)中,我可以login,获取会话cookie,并将该会话cookie发回给后续请求,以便我可以通过所有API调用进行身份validation。 但是,当我通过Mobile Safarilogin时,Cookie不会在后续请求中发回。 我使用Charles Proxy来监视发生了什么,它告诉我: POST https://myremoteserver.com/sessions.json传递我的login信息 它成功,并收到一个有效的Set-Cookie头的响应。 请求GET https://myremoteserver.com/checkout.json ,没有Cookie请求头。 服务器响应,如果我没有login。 我在Zepto.js使用这段代码来确保在XHR对象上正确设置withCredentials: true 。 (赦免咖啡) # Add withCredentials:true to the xhr object to send the remote server our cookies. xhrFactory = $.ajaxSettings.xhr $.ajaxSettings.xhr = -> xhr = xhrFactory.apply(this, arguments) xhr.withCredentials = yes xhr 这个片段在桌面浏览器中效果很好,在我添加之前,我无法在这些桌面浏览器中保留会话cookie。 MobileSafari中是否存在一些令桌面浏览器无法正常工作的问题? 为什么它不以同样的方式工作? 编辑! 这是我的轨道2.3应用程序,我相信相当标准的东西我的CORS头设置 def add_cors_headers if valid_cors_domain headers['Access-Control-Allow-Origin'] […]