我有一个REST Api的网站,现在我正在创建一个浏览器扩展,它将从一些页面收集数据并将它们发送回REST Api.因为我希望我的扩展程序兼容firefox和chrome,并且易于维护,我将实际代码作为脚本标记注入页面,然后像普通的javascript一样执行.我目前只在扩展的chrome版本上工作,我遇到了一个问题:
当我尝试将数据发送到api(PATCH请求)时,chrome不会让我说:
XMLHttpRequest无法加载http://my.rest/api.Access-Control-Allow-Origin不允许使用Origin http://website.com.
我将Access-Control-Allow-Headers,Methods和Origin都设置为正确的值,但它仍然不起作用.它适用于GET请求.我也尝试过POST和PUT请求,但那些也不起作用.
这是我的标题:
请求:
OPTIONS /some/api/path HTTP/1.1
Host: my.rest
Connection: keep-alive
Access-Control-Request-Method: PATCH
Origin: http://website.com
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36
X-FireLogger: 1.1
Access-Control-Request-Headers: accept, x-http-auth-user, x-http-auth-token, origin, content-type
Accept: */*
Referer: http://website.com/index.php
Accept-Encoding: gzip,deflate,sdch
Accept-Language: cs-CZ,cs;q=0.8
Run Code Online (Sandbox Code Playgroud)
响应:
Access-Control-Allow-Headers:accept, x-http-auth-user, x-http-auth-token, origin, content-type
Access-Control-Allow-Methods:PATCH
Access-Control-Allow-Origin:*
Connection:Keep-Alive
Content-Type:text/html; charset=utf-8
Date:Thu, 04 Jul 2013 10:50:08 GMT
Keep-Alive:timeout=5, max=100
Server:Apache/2.4.2 (Win64) PHP/5.4.3
X-Frame-Options:SAMEORIGIN
X-Powered-By:Nette Framework
Run Code Online (Sandbox Code Playgroud)
我也尝试将Access-Control-Allow-Origin设置为与Origin标题完全相同的值,但它不起作用.此外,它似乎在Firefox中工作.我有Chrome 27,应该是最新的.
我有一段代码,在Windows上运行速度比在linux上快2倍.这是我测量的时间:
g++ -Ofast -march=native -m64
29.1123
g++ -Ofast -march=native
29.0497
clang++ -Ofast -march=native
28.9192
visual studio 2013 Debug 32b
13.8802
visual studio 2013 Release 32b
12.5569
Run Code Online (Sandbox Code Playgroud)
这似乎是一个太大的差异.
这是代码:
#include <iostream>
#include <map>
#include <chrono>
static std::size_t Count = 1000;
static std::size_t MaxNum = 50000000;
bool IsPrime(std::size_t num)
{
for (std::size_t i = 2; i < num; i++)
{
if (num % i == 0)
return false;
}
return true;
}
int main()
{
auto start = std::chrono::steady_clock::now();
std::map<std::size_t, bool> value; …Run Code Online (Sandbox Code Playgroud) 是否可以使用fstream(或类似的东西)从C++中的二进制文件末尾删除N个字节?我不想读取整个文件,剪切并再次写入,但由于它是从文件的末尾看起来它不应该是这样的问题.
谢谢你的建议.
c++ ×2
32bit-64bit ×1
benchmarking ×1
cross-domain ×1
fstream ×1
javascript ×1
performance ×1
x86 ×1