小编Jam*_*esG的帖子

Google analytics.js和内容安全政策

我有一个使用默认html5boilerplate内容安全策略的Web应用程序.

但是,我们在页面上有新的Google analytics.js代码段,该代码段已被CSP阻止.

我一直试图找到一个CSP和JS包含结构的例子,它将允许谷歌analytics.js,但没有任何运气.

最接近的SO帖子是Google Analytics和Content-Security-Policy标头,但这是使用较旧的ga.js.

不幸的是,Google Docs没有提到CSP.

我已经达到了以下解决方案:

我的html文件的底部:

<script type="text/javascript" src="/js/analytics.js"></script>
Run Code Online (Sandbox Code Playgroud)

analytics.js的内容:

(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function()
{ (i[r].q=i[r].q||[]).push(arguments)}
,i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;        m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-XXXXXXXX-1', 'auto');
ga('send', 'pageview');
Run Code Online (Sandbox Code Playgroud)

.htaccess CSP:

Header set Content-Security-Policy "script-src 'self' https://ssl.google-analytics.com http://www.google-analytics.com; object-src 'self'"
Run Code Online (Sandbox Code Playgroud)

这是有效的 - 但我不确定我是否会打破GA代码的异步性质,或者造成一些其他意想不到的后果.

有人可以建议通过内容安全策略允许Google analytics.js的正确方法吗?

作者编辑: 最后,我使用了Google Analytics和Content-Security-Policy标题中详细介绍的解决方案,还原为ga.js. 但我仍然想知道是否可以以相同的方式使用analytics.js.

作者编辑2: 看起来可能直接使用Google提供的analytics.js以及与其他SO帖子相同的原则:

HTML文件的底部:

<script type="text/javascript" src="https://ssl.google-analytics.com/analytics.js"></script>
<script type="text/javascript" src="/js/analytics.js"></script>
Run Code Online (Sandbox Code Playgroud)

analytics.js的内容:

ga('create', 'UA-XXXX-Y', 'auto');
ga('send', 'pageview');
Run Code Online (Sandbox Code Playgroud)

CSP:

Header set Content-Security-Policy "script-src 'self' https://www.google-analytics.com https://ssl.google-analytics.com; object-src 'self'"
Run Code Online (Sandbox Code Playgroud)

这是未经测试的 - …

javascript google-analytics content-security-policy

23
推荐指数
1
解决办法
5170
查看次数

如何突出显示多标记图上的特定标记

我有这种情况,请帮助我解决这个问题
在一个有多个标记的地图上我使用两个经度和纬度变量并将它们用作地图的中心点.

我怎么能够

  1. 使用这些lat/long的标记用于中心弹跳或
    动画
  2. 将此居中标记的图标更改为与其他标记不同
  3. 在信息框中添加其他信息.

在此先感谢您的帮助

-----这是代码

<!DOCTYPE html>
<html> 
<head> 
  <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 
  <title>Google Maps Multiple Markers</title> 
  <script src="http://maps.google.com/maps/api/js?sensor=false" 
          type="text/javascript"></script>
</head> 
<body>
  <div id="map" style="width: 500px; height: 400px;"></div>

  <script type="text/javascript">
    var locations = [
      ['Bondi Beach', -33.890542, 151.274856, 4],
      ['Coogee Beach', -33.923036, 151.259052, 5],
      ['Cronulla Beach', -34.028249, 151.157507, 3],
      ['Manly Beach', -33.80010128657071, 151.28747820854187, 2],
      ['Maroubra Beach', -33.950198, 151.259302, 1]
    ];

var lat1 = '-33.92'
var long1 = '151.25'

    var map = new google.maps.Map(document.getElementById('map'), {
      zoom: …
Run Code Online (Sandbox Code Playgroud)

google-maps google-maps-api-3

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

Ember JS:如何基于第一个数据加载第二个模型

我有一个Ember应用程序,而不是使用Ember Data,使用我们自己的自定义AJAX数据层来与API通信.

我们可以使用RSVP一次加载两个模型 - 一个是Project通过我们的API包装器的对象,第二个是表示登录用户的对象.两者都传递到控制器和模板,工作得很好.

但我需要根据返回Project对象中的值加载第二个模型.

一旦我在我的路线中装载了这样的模型......

App.ProjectUpdateRoute = Ember.Route.extend({

    setupController: function(controller, model) {
        controller.set('model', model);
    },

    model: function(params) {

        return Ember.RSVP.hash({
            // Load Project from API - /myapi/v1/Project/:ProjectID
            Project : App.Project.create().findById(params.ProjectID),
            // Load current user from local object
            User : App.AuthUser,
        });
    },
});
Run Code Online (Sandbox Code Playgroud)

...我有一个Project(或更确切地说model.Project)具有各种属性的对象,包括拥有该项目的用户的ID.

现在,我想进行第二次API调用/myapi/v1/User/:UserID以获取用户的详细信息.

我尝试过的所有内容 - 包括App.User.create().findById(UserID)在路由setupController函数和控制器中添加更多调用- 都会产生正确的API调用,但它是异步的,因此Ember继续渲染页面而我无法显示API调用的结果页.

那么 - 如何以及在Ember结构中的哪个位置,我会根据第一个数据加载第二个模型?我如何让ember等待第二次AJAX调用的解决承诺?

UPDATE

我也尝试过使用afterModel:function()几乎我需要的东西 - 它在应用程序流程中的第二个API调用正确的位置,但我仍然需要将结果添加到我现有的model数组中:

afterModel: function(model, …
Run Code Online (Sandbox Code Playgroud)

ajax promise ember.js rsvp.js

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

Yii2数据库会话 - 存储其他属性和用户信息

我正在使用Yii2的DBSession类将Web应用程序会话存储到一个名为的数据库表中session.

此表在默认情况下只能有3列- id,expiredata.

我想将其他信息存储到此表中,就像user_id登录用户一样.

编辑:所以有一个名为yii\web\MultiFieldSession的父类,但没有关于它如何使用的示例.我会看到我能发现的东西......

php session yii yii2

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

无法转换PHPMailer类的PHP对象

我读过类似的线程,但这个问题有所不同.问题是具有相同类的100%相同代码正在另一页上工作.但由于一些奇怪的原因,它不能在索引页面上工作.这是我得到的错误:

唯一的区别是工作文件位于root的子目录中,即/ xyz,但索引文件位于root中,但是对于表单的操作指向子目录中的文件,即/xyz/file.php所以我认为这不是一个问题.

PHP Catchable致命错误:PHPMailer类的对象无法转换为字符串 /home4/elliot/public_html/web.com/class.phpmailer.php on line 764

这是PHP Mailer在764行显示的内容:

$address = trim($address);
Run Code Online (Sandbox Code Playgroud)

这是什么工作代码:

date_default_timezone_set('Etc/UTC');

require '../PHPMailerAutoload.php';

$mail = new PHPMailer();

$mail->isSMTP();

$mail->SMTPDebug = 0;

$mail->Debugoutput = 'html';

$mail->Host = "removed";

$mail->Port = 25;

$mail->SMTPAuth = true;

$mail->Username = "removed";

$mail->Password = "removed";
//Set who the message is to be sent from
$mail->setFrom('xx@xx.com', 'John Doe');

$mail->addReplyTo('xx@xx.com', 'John Doe');
//Set who the message is to be sent to
$mail->addAddress($email,$full);

$mail->Subject = 'Subject';
$mail->Body     =  $body;
$mail->IsHTML(true);
$mail->send();
Run Code Online (Sandbox Code Playgroud)

这是非工作代码的样子:

 date_default_timezone_set('Etc/UTC');

require …
Run Code Online (Sandbox Code Playgroud)

php phpmailer

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